From 41dcc46e2c1dfc90b3f962f4c24f2f58bf56e07c Mon Sep 17 00:00:00 2001
From: GitLab Runner 1149 <netvs@scc.kit.edu>
Date: Thu, 19 Dec 2024 01:16:06 +0000
Subject: [PATCH] Automated Save by CI Run

---
 4.0/golang/__init__.py |   58 -
 4.0/golang/cntl.py     | 4517 -------------------------------------
 4.0/golang/dhcpcfg.py  |  277 ---
 4.0/golang/dhcpv4.py   | 1476 ------------
 4.0/golang/dns.py      | 1383 ------------
 4.0/golang/dnscfg.py   | 1477 ------------
 4.0/golang/dnssec.py   |  125 --
 4.0/golang/evlog.py    |  237 --
 4.0/golang/macauth.py  |  159 --
 4.0/golang/nd.py       | 4324 -----------------------------------
 4.0/golang/ndcfg.py    | 3515 -----------------------------
 4.0/golang/nm.py       |   58 -
 4.0/golang/org.py      |  331 ---
 4.0/golang/structs.go  | 1351 +++++++++++
 4.0/golang/tmp.py      |  111 -
 4.0/golang/wapi.py     |  855 -------
 4.1/golang/__init__.py |   58 -
 4.1/golang/cntl.py     | 4862 ----------------------------------------
 4.1/golang/dhcpcfg.py  |  301 ---
 4.1/golang/dhcpv4.py   | 1556 -------------
 4.1/golang/dns.py      | 1506 -------------
 4.1/golang/dnscfg.py   | 1564 -------------
 4.1/golang/dnssec.py   |  137 --
 4.1/golang/evlog.py    |  266 ---
 4.1/golang/macauth.py  |  175 --
 4.1/golang/nd.py       | 4562 -------------------------------------
 4.1/golang/ndcfg.py    | 3739 ------------------------------
 4.1/golang/nm.py       |   66 -
 4.1/golang/org.py      |  342 ---
 4.1/golang/structs.go  | 1357 +++++++++++
 4.1/golang/tmp.py      |  111 -
 4.1/golang/wapi.py     |  906 --------
 4.2/golang/__init__.py |   58 -
 4.2/golang/cntl.py     | 4576 -------------------------------------
 4.2/golang/dhcpcfg.py  |  277 ---
 4.2/golang/dhcpv4.py   | 1362 -----------
 4.2/golang/dns.py      | 1456 ------------
 4.2/golang/dnscfg.py   | 1511 -------------
 4.2/golang/dnssec.py   |  133 --
 4.2/golang/evlog.py    |  262 ---
 4.2/golang/macauth.py  |  167 --
 4.2/golang/nd.py       | 4287 -----------------------------------
 4.2/golang/ndcfg.py    | 3543 -----------------------------
 4.2/golang/nm.py       |   58 -
 4.2/golang/org.py      |  330 ---
 4.2/golang/structs.go  | 1369 +++++++++++
 4.2/golang/tmp.py      |  157 --
 4.2/golang/wapi.py     |  898 --------
 48 files changed, 4077 insertions(+), 58129 deletions(-)
 delete mode 100644 4.0/golang/__init__.py
 delete mode 100644 4.0/golang/cntl.py
 delete mode 100644 4.0/golang/dhcpcfg.py
 delete mode 100644 4.0/golang/dhcpv4.py
 delete mode 100644 4.0/golang/dns.py
 delete mode 100644 4.0/golang/dnscfg.py
 delete mode 100644 4.0/golang/dnssec.py
 delete mode 100644 4.0/golang/evlog.py
 delete mode 100644 4.0/golang/macauth.py
 delete mode 100644 4.0/golang/nd.py
 delete mode 100644 4.0/golang/ndcfg.py
 delete mode 100644 4.0/golang/nm.py
 delete mode 100644 4.0/golang/org.py
 create mode 100644 4.0/golang/structs.go
 delete mode 100644 4.0/golang/tmp.py
 delete mode 100644 4.0/golang/wapi.py
 delete mode 100644 4.1/golang/__init__.py
 delete mode 100644 4.1/golang/cntl.py
 delete mode 100644 4.1/golang/dhcpcfg.py
 delete mode 100644 4.1/golang/dhcpv4.py
 delete mode 100644 4.1/golang/dns.py
 delete mode 100644 4.1/golang/dnscfg.py
 delete mode 100644 4.1/golang/dnssec.py
 delete mode 100644 4.1/golang/evlog.py
 delete mode 100644 4.1/golang/macauth.py
 delete mode 100644 4.1/golang/nd.py
 delete mode 100644 4.1/golang/ndcfg.py
 delete mode 100644 4.1/golang/nm.py
 delete mode 100644 4.1/golang/org.py
 create mode 100644 4.1/golang/structs.go
 delete mode 100644 4.1/golang/tmp.py
 delete mode 100644 4.1/golang/wapi.py
 delete mode 100644 4.2/golang/__init__.py
 delete mode 100644 4.2/golang/cntl.py
 delete mode 100644 4.2/golang/dhcpcfg.py
 delete mode 100644 4.2/golang/dhcpv4.py
 delete mode 100644 4.2/golang/dns.py
 delete mode 100644 4.2/golang/dnscfg.py
 delete mode 100644 4.2/golang/dnssec.py
 delete mode 100644 4.2/golang/evlog.py
 delete mode 100644 4.2/golang/macauth.py
 delete mode 100644 4.2/golang/nd.py
 delete mode 100644 4.2/golang/ndcfg.py
 delete mode 100644 4.2/golang/nm.py
 delete mode 100644 4.2/golang/org.py
 create mode 100644 4.2/golang/structs.go
 delete mode 100644 4.2/golang/tmp.py
 delete mode 100644 4.2/golang/wapi.py

diff --git a/4.0/golang/__init__.py b/4.0/golang/__init__.py
deleted file mode 100644
index d3b1f29..0000000
--- a/4.0/golang/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-### AUTOGENERATED
-import requests
-from typing import Union
-from pprint import pformat
-
-
-# ExeccutionError is derived from ValueError to keep backward compatibility.
-class ExecutionError(ValueError):
-	"""Raise if API returns an error code != 400"""
-
-	def __init__(self, status_code, reason, result):
-		self.status_code = status_code
-		self.reason = reason
-		self.result = result
-		message = f'Request returned unexpected result ({self.status_code}: {self.reason}). Result: \n{pformat(self.result)}'
-		super().__init__(message)
-
-
-class APIObject(object):
-	pass
-
-
-class ExplicitNull(object):
-	pass
-
-
-class APIEndpoint(object):
-	def __init__(self, base_url: str, token: str, **kwargs):
-		self.base_url = base_url
-		self.version = '4.0'
-		self.token = token
-
-
-class APISession(object):
-	def __init__(self, endpoint: APIEndpoint):
-		self.session = requests.session()
-		self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token})
-		if 'www-net' in endpoint.base_url:
-			self.base_url = f'https://{endpoint.base_url}/api/{endpoint.version}'
-		else:
-			self.base_url = f'https://{endpoint.base_url}/{endpoint.version}'
-
-	def execute_ta(self, ta: list, dry_mode: bool = False, dict_mode: bool = False, su_login_name: str = None) -> Union[list, dict]:
-		res = self.session.post(f'{self.base_url}/wapi/transaction/execute?dry_mode={str(dry_mode).lower()}&dict_mode={str(dict_mode).lower()}{"" if su_login_name is None else "&su_login_name="+su_login_name}', json=ta)
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return res.json()
-
-	def close(self):
-		self.session.close()
-
-
-def _denullify_dict(d):
-	d = {k:v for k,v in d.items() if v is not None}
-	for k,v in d.items():
-		if isinstance(v, ExplicitNull):
-			d[k] = None
-	return d
diff --git a/4.0/golang/cntl.py b/4.0/golang/cntl.py
deleted file mode 100644
index 6e135b9..0000000
--- a/4.0/golang/cntl.py
+++ /dev/null
@@ -1,4517 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class System(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.system.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr(APIObject):
-	gpk: str
-	email: str
-	is_own: bool
-	is_sub: bool
-	is_svc: bool
-	sub_id: str
-	svc_id: str
-	is_self: bool
-	last_name: str
-	first_name: str
-	kit_status: int
-	login_name: str
-	description: str
-	is_adm_locked: bool
-	parent_login_name: str
-	enable_delete_date: str
-	kit_status_description: str
-	allow_data_manipulation: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.email is not None and not isinstance(self.email, str):
-			raise ValueError(f"'email' of incorrect type. Expected str, got {type(self.email)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.is_svc, bool):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(self.is_svc)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if self.svc_id is not None and not isinstance(self.svc_id, str):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(self.svc_id)}")
-		if not isinstance(self.is_self, bool):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(self.is_self)}")
-		if self.last_name is not None and not isinstance(self.last_name, str):
-			raise ValueError(f"'last_name' of incorrect type. Expected str, got {type(self.last_name)}")
-		if self.first_name is not None and not isinstance(self.first_name, str):
-			raise ValueError(f"'first_name' of incorrect type. Expected str, got {type(self.first_name)}")
-		if not isinstance(self.kit_status, int):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(self.kit_status)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_adm_locked, bool):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(self.is_adm_locked)}")
-		if not isinstance(self.parent_login_name, str):
-			raise ValueError(f"'parent_login_name' of incorrect type. Expected str, got {type(self.parent_login_name)}")
-		if self.enable_delete_date is not None and not isinstance(self.enable_delete_date, str):
-			raise ValueError(f"'enable_delete_date' of incorrect type. Expected str, got {type(self.enable_delete_date)}")
-		if not isinstance(self.kit_status_description, str):
-			raise ValueError(f"'kit_status_description' of incorrect type. Expected str, got {type(self.kit_status_description)}")
-		if not isinstance(self.allow_data_manipulation, bool):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(self.allow_data_manipulation)}")
-
-	@staticmethod
-	def create_ta(is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> dict:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		return {'name': 'cntl.mgr.create', 'new': _denullify_dict({'is_svc': is_svc_new, 'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'do_copy_roles': do_copy_roles_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> list:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_svc_new=is_svc_new, sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, do_copy_roles_new=do_copy_roles_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(login_name_old: str) -> dict:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, login_name_old: str) -> list:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, kit_status_old: int = None, login_name_old: str = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, fetch_offset_old: int = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str) or isinstance(login_name_old, ExplicitNull)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		return {'name': 'cntl.mgr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'is_svc': is_svc_old, 'sub_id': sub_id_old, 'svc_id': svc_id_old, 'is_self': is_self_old, 'kit_status': kit_status_old, 'login_name': login_name_old, 'fetch_limit': fetch_limit_old, 'sub_id_list': sub_id_list_old, 'svc_id_list': svc_id_list_old, 'fetch_offset': fetch_offset_old, 'is_adm_locked': is_adm_locked_old, 'sub_id_regexp': sub_id_regexp_old, 'svc_id_regexp': svc_id_regexp_old, 'login_name_list': login_name_list_old, 'login_name_regexp': login_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'parent_login_name_list': parent_login_name_list_old, 'allow_data_manipulation': allow_data_manipulation_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, kit_status_old: int = None, login_name_old: str = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, fetch_offset_old: int = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str) or isinstance(login_name_old, ExplicitNull)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_sub_old=is_sub_old, is_svc_old=is_svc_old, sub_id_old=sub_id_old, svc_id_old=svc_id_old, is_self_old=is_self_old, kit_status_old=kit_status_old, login_name_old=login_name_old, fetch_limit_old=fetch_limit_old, sub_id_list_old=sub_id_list_old, svc_id_list_old=svc_id_list_old, fetch_offset_old=fetch_offset_old, is_adm_locked_old=is_adm_locked_old, sub_id_regexp_old=sub_id_regexp_old, svc_id_regexp_old=svc_id_regexp_old, login_name_list_old=login_name_list_old, login_name_regexp_old=login_name_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, parent_login_name_list_old=parent_login_name_list_old, allow_data_manipulation_old=allow_data_manipulation_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> dict:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.update', 'new': _denullify_dict({'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> list:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Error(APIObject):
-	gpk: str
-	code: int
-	type: int
-	system: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.type, int):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(self.type)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-
-	@staticmethod
-	def create_ta(code_new: int, type_new: int, system_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		return {'name': 'cntl.error.create', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, type_new: int, system_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, type_new=type_new, system_new=system_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int, type_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int, type_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, code_old: int = None, type_old: int = None, system_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if type_old is not None and not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'code': code_old, 'type': type_old, 'system': system_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, code_old: int = None, type_old: int = None, system_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if type_old is not None and not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, code_old=code_old, type_old=type_old, system_old=system_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.update', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, type_new=type_new, system_new=system_new, code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Column(APIObject):
-	gpk: str
-	name: str
-	is_wapi: bool
-	ref_name: str
-	data_type: str
-	table_name: str
-	is_nullable: bool
-	is_required: bool
-	is_deprecated: bool
-	attribute_name: str
-	ref_table_name: str
-	is_ot_global_ref: bool
-	object_type_fq_name: str
-	pg_attribute_exists: bool
-	use_ref_column_language_attributes: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_wapi, bool):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(self.is_wapi)}")
-		if self.ref_name is not None and not isinstance(self.ref_name, str):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(self.ref_name)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_nullable, bool):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(self.is_nullable)}")
-		if not isinstance(self.is_required, bool):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(self.is_required)}")
-		if not isinstance(self.is_deprecated, bool):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(self.is_deprecated)}")
-		if not isinstance(self.attribute_name, str):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(self.attribute_name)}")
-		if self.ref_table_name is not None and not isinstance(self.ref_table_name, str):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(self.ref_table_name)}")
-		if not isinstance(self.is_ot_global_ref, bool):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(self.is_ot_global_ref)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.pg_attribute_exists, bool):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(self.pg_attribute_exists)}")
-		if not isinstance(self.use_ref_column_language_attributes, bool):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(self.use_ref_column_language_attributes)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_name_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		return {'name': 'cntl.column.create', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_name': ref_name_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'ref_table_name': ref_table_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_name_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_name_new=ref_name_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, ref_table_name_new=ref_table_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		return {'name': 'cntl.column.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old, 'do_ref_set_null': do_ref_set_null_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old, do_ref_set_null_old=do_ref_set_null_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, data_type_old: str = None, table_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		return {'name': 'cntl.column.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'data_type': data_type_old, 'table_name': table_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_deprecated': is_deprecated_old, 'is_ot_global_ref': is_ot_global_ref_old, 'filter_params_dict': filter_params_dict_old, 'pg_attribute_exists': pg_attribute_exists_old, 'sorting_params_list': sorting_params_list_old, 'use_ref_column_language_attributes': use_ref_column_language_attributes_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, data_type_old: str = None, table_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, data_type_old=data_type_old, table_name_old=table_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_deprecated_old=is_deprecated_old, is_ot_global_ref_old=is_ot_global_ref_old, filter_params_dict_old=filter_params_dict_old, pg_attribute_exists_old=pg_attribute_exists_old, sorting_params_list_old=sorting_params_list_old, use_ref_column_language_attributes_old=use_ref_column_language_attributes_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_name_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.column.update', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_name': ref_name_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'ref_table_name': ref_table_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_name_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_name_new=ref_name_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, ref_table_name_new=ref_table_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint(APIObject):
-	gpk: str
-	name: str
-	type: str
-	ref_name: str
-	dblvl_name: str
-	table_name: str
-	is_function: bool
-	is_api_level: bool
-	col_name_list: list
-	join_operator: str
-	is_referencing: bool
-	is_join_default: bool
-	dblvl_table_name: str
-	is_referenceable: bool
-	col_data_type_list: list
-	join_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.ref_name is not None and not isinstance(self.ref_name, str):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(self.ref_name)}")
-		if self.dblvl_name is not None and not isinstance(self.dblvl_name, str):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(self.dblvl_name)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_function, bool):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(self.is_function)}")
-		if not isinstance(self.is_api_level, bool):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(self.is_api_level)}")
-		if not isinstance(self.col_name_list, list):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(self.col_name_list)}")
-		if not isinstance(self.join_operator, str):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(self.join_operator)}")
-		if not isinstance(self.is_referencing, bool):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(self.is_referencing)}")
-		if not isinstance(self.is_join_default, bool):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(self.is_join_default)}")
-		if self.dblvl_table_name is not None and not isinstance(self.dblvl_table_name, str):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(self.dblvl_table_name)}")
-		if not isinstance(self.is_referenceable, bool):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(self.is_referenceable)}")
-		if not isinstance(self.col_data_type_list, list):
-			raise ValueError(f"'col_data_type_list' of incorrect type. Expected list, got {type(self.col_data_type_list)}")
-		if not isinstance(self.join_grants_read_access, bool):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(self.join_grants_read_access)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_grants_read_access_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_grants_read_access_new is not None and not (isinstance(join_grants_read_access_new, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_new)}")
-
-		return {'name': 'cntl.constraint.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_grants_read_access': join_grants_read_access_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_grants_read_access_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_grants_read_access_new is not None and not (isinstance(join_grants_read_access_new, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_grants_read_access_new=join_grants_read_access_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, ref_name_old: str = None, table_name_old: str = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_join_default_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_old is not None and not (isinstance(join_grants_read_access_old, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_old)}")
-
-		return {'name': 'cntl.constraint.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'ref_name': ref_name_old, 'table_name': table_name_old, 'fetch_limit': fetch_limit_old, 'is_function': is_function_old, 'fetch_offset': fetch_offset_old, 'is_api_level': is_api_level_old, 'is_join_default': is_join_default_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'join_grants_read_access': join_grants_read_access_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, ref_name_old: str = None, table_name_old: str = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_join_default_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_old is not None and not (isinstance(join_grants_read_access_old, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, ref_name_old=ref_name_old, table_name_old=table_name_old, fetch_limit_old=fetch_limit_old, is_function_old=is_function_old, fetch_offset_old=fetch_offset_old, is_api_level_old=is_api_level_old, is_join_default_old=is_join_default_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, join_grants_read_access_old=join_grants_read_access_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_grants_read_access_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_grants_read_access_new is not None and not (isinstance(join_grants_read_access_new, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_grants_read_access': join_grants_read_access_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_grants_read_access_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_grants_read_access_new is not None and not (isinstance(join_grants_read_access_new, bool)):
-			raise ValueError(f"'join_grants_read_access' of incorrect type. Expected bool, got {type(join_grants_read_access_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_grants_read_access_new=join_grants_read_access_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ErrorType(APIObject):
-	gpk: str
-	code: int
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.error_type.create', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, code_new: int = None, name_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.update', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, code_new: int = None, name_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, name_new=name_new, code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Table(APIObject):
-	gpk: str
-	name: str
-	system: str
-	is_log_dst: bool
-	is_log_src: bool
-	is_lang_dst: bool
-	is_lang_src: bool
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	content_gender: str
-	pg_cls_exists: bool
-	object_type_fq_name: str
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.content_gender, str):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(self.content_gender)}")
-		if not isinstance(self.pg_cls_exists, bool):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(self.pg_cls_exists)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def create_ta(name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		return {'name': 'cntl.table.create', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, do_del_cols_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		return {'name': 'cntl.table.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'do_del_cols': do_del_cols_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, do_del_cols_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, do_del_cols_old=do_del_cols_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, system_old: str = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		return {'name': 'cntl.table.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'system': system_old, 'is_log_dst': is_log_dst_old, 'is_log_src': is_log_src_old, 'fetch_limit': fetch_limit_old, 'is_lang_dst': is_lang_dst_old, 'is_lang_src': is_lang_src_old, 'fetch_offset': fetch_offset_old, 'is_otattr_dst': is_otattr_dst_old, 'is_otattr_src': is_otattr_src_old, 'pg_cls_exists': pg_cls_exists_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'do_activate_global_pk2obj': do_activate_global_pk2obj_old, 'object_type_grants_read_access': object_type_grants_read_access_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, system_old: str = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, system_old=system_old, is_log_dst_old=is_log_dst_old, is_log_src_old=is_log_src_old, fetch_limit_old=fetch_limit_old, is_lang_dst_old=is_lang_dst_old, is_lang_src_old=is_lang_src_old, fetch_offset_old=fetch_offset_old, is_otattr_dst_old=is_otattr_dst_old, is_otattr_src_old=is_otattr_src_old, pg_cls_exists_old=pg_cls_exists_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, do_activate_global_pk2obj_old=do_activate_global_pk2obj_old, object_type_grants_read_access_old=object_type_grants_read_access_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.table.update', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_imp_from_dd_upd_cols': do_imp_from_dd_upd_cols_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new, 'make_generic_object_type_permissions': make_generic_object_type_permissions_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_imp_from_dd_upd_cols_new=do_imp_from_dd_upd_cols_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, make_generic_object_type_permissions_new=make_generic_object_type_permissions_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role(APIObject):
-	gpk: str
-	name: str
-	system: str
-	fq_name: str
-	is_role: bool
-	position: int
-	is_admin_role: bool
-	contained_roles: list
-	is_directly_assigned: bool
-	contained_permissions: dict
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_role, bool):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(self.is_role)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_admin_role, bool):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(self.is_admin_role)}")
-		if not isinstance(self.contained_roles, list):
-			raise ValueError(f"'contained_roles' of incorrect type. Expected list, got {type(self.contained_roles)}")
-		if not isinstance(self.is_directly_assigned, bool):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(self.is_directly_assigned)}")
-		if not isinstance(self.contained_permissions, dict):
-			raise ValueError(f"'contained_permissions' of incorrect type. Expected dict, got {type(self.contained_permissions)}")
-
-	@staticmethod
-	def create_ta(fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> dict:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		return {'name': 'cntl.role.create', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> list:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_role_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		return {'name': 'cntl.role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_role': is_role_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'is_admin_role': is_admin_role_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_directly_assigned': is_directly_assigned_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_role_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_role_old=is_role_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, is_admin_role_old=is_admin_role_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_directly_assigned_old=is_directly_assigned_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> dict:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.update', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> list:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2role(APIObject):
-	gpk: str
-	role: str
-	system: str
-	role_fq_name: str
-	mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role, str):
-			raise ValueError(f"'role' of incorrect type. Expected str, got {type(self.role)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-
-	@staticmethod
-	def bulk_update_ta(mgr_login_name_old: str, role_fq_name_list_new: list = None, do_preserve_contained_on_delete_new: bool = None, role_fq_name_list_old: list = None) -> dict:
-		if role_fq_name_list_new is not None and not (isinstance(role_fq_name_list_new, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_new)}")
-		if do_preserve_contained_on_delete_new is not None and not (isinstance(do_preserve_contained_on_delete_new, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_new)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-
-		return {'name': 'cntl.mgr2role.bulk_update', 'new': _denullify_dict({'role_fq_name_list': role_fq_name_list_new, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_new}), 'old': _denullify_dict({'mgr_login_name': mgr_login_name_old, 'role_fq_name_list': role_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, mgr_login_name_old: str, role_fq_name_list_new: list = None, do_preserve_contained_on_delete_new: bool = None, role_fq_name_list_old: list = None) -> list:
-		if role_fq_name_list_new is not None and not (isinstance(role_fq_name_list_new, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_new)}")
-		if do_preserve_contained_on_delete_new is not None and not (isinstance(do_preserve_contained_on_delete_new, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_new)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(role_fq_name_list_new=role_fq_name_list_new, do_preserve_contained_on_delete_new=do_preserve_contained_on_delete_new, mgr_login_name_old=mgr_login_name_old, role_fq_name_list_old=role_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.mgr2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'mgr_login_name': mgr_login_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, mgr_login_name_old=mgr_login_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role2role(APIObject):
-	gpk: str
-	role_fq_name: str
-	role_is_role: bool
-	contained_role_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.role_is_role, bool):
-			raise ValueError(f"'role_is_role' of incorrect type. Expected bool, got {type(self.role_is_role)}")
-		if not isinstance(self.contained_role_fq_name, str):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(self.contained_role_fq_name)}")
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, contained_role_fq_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		return {'name': 'cntl.role2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'contained_role_fq_name': contained_role_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, contained_role_fq_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, contained_role_fq_name_new=contained_role_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.role2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'contained_role_fq_name': contained_role_fq_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, contained_role_fq_name_old=contained_role_fq_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_old: str = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_old is not None and not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_old is not None and not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-
-		return {'name': 'cntl.role2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'role_fq_name': role_fq_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'contained_role_fq_name': contained_role_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_old: str = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_old is not None and not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_old is not None and not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, role_fq_name_old=role_fq_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, contained_role_fq_name_old=contained_role_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GlobalPk2obj(APIObject):
-	gpk: str
-	object_dict: dict
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.object_dict, dict):
-			raise ValueError(f"'object_dict' of incorrect type. Expected dict, got {type(self.object_dict)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		return {'name': 'cntl.global_pk2obj.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'do_only_unqpr_object_attrs': do_only_unqpr_object_attrs_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, do_only_unqpr_object_attrs_old=do_only_unqpr_object_attrs_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint2error(APIObject):
-	gpk: str
-	sqlstate: str
-	error_code: int
-	constraint_name: str
-	error_type_code: int
-	constraint_table: str
-	parent_key_not_found: bool
-	constraint_is_api_level: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.sqlstate, str):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(self.sqlstate)}")
-		if not isinstance(self.error_code, int):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(self.error_code)}")
-		if not isinstance(self.constraint_name, str):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(self.constraint_name)}")
-		if not isinstance(self.error_type_code, int):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(self.error_type_code)}")
-		if not isinstance(self.constraint_table, str):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(self.constraint_table)}")
-		if self.parent_key_not_found is not None and not isinstance(self.parent_key_not_found, bool):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(self.parent_key_not_found)}")
-		if not isinstance(self.constraint_is_api_level, bool):
-			raise ValueError(f"'constraint_is_api_level' of incorrect type. Expected bool, got {type(self.constraint_is_api_level)}")
-
-	@staticmethod
-	def create_ta(sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		return {'name': 'cntl.constraint2error.create', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> dict:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> list:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, parent_key_not_found_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-
-		return {'name': 'cntl.constraint2error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'sqlstate': sqlstate_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'parent_key_not_found': parent_key_not_found_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, parent_key_not_found_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, sqlstate_old=sqlstate_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, parent_key_not_found_old=parent_key_not_found_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.update', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataType(APIObject):
-	pk: int
-	gpk: str
-	name: str
-	base_name: str
-	base_nspc: str
-	json_name: str
-	is_primary: bool
-	text_length: int
-	pg_type_name: str
-	pg_type_nspc: str
-	operator_list: list
-	format_literal: str
-	conv_daty_val_attname: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.base_name, str):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(self.base_name)}")
-		if self.base_nspc is not None and not isinstance(self.base_nspc, str):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(self.base_nspc)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.pg_type_name, str):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(self.pg_type_name)}")
-		if not isinstance(self.pg_type_nspc, str):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(self.pg_type_nspc)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-		if not isinstance(self.conv_daty_val_attname, str):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(self.conv_daty_val_attname)}")
-
-	@staticmethod
-	def create_ta(name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		return {'name': 'cntl.data_type.create', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(pk_old: int) -> dict:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, pk_old: int) -> list:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(pk_old: int = None, gpk_old: str = None, name_old: str = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old, 'gpk': gpk_old, 'name': name_old, 'json_name': json_name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, pk_old: int = None, gpk_old: str = None, name_old: str = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(pk_old=pk_old, gpk_old=gpk_old, name_old=name_old, json_name_old=json_name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.update', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ColumnKvtab(APIObject):
-	gpk: str
-	key: str
-	position: int
-	table_name: str
-	column_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key, str):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(self.key)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.column_name, str):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(self.column_name)}")
-
-	@staticmethod
-	def create_ta(key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		return {'name': 'cntl.column_kvtab.create', 'new': _denullify_dict({'key': key_new, 'position': position_new, 'table_name': table_name_new, 'column_name': column_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> list:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_new=key_new, position_new=position_new, table_name_new=table_name_new, column_name_new=column_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_old: str, table_name_old: str, column_name_old: str) -> dict:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str) -> list:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, key_old: str = None, table_name_old: str = None, column_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_old is not None and not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if column_name_old is not None and not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.column_kvtab.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, key_old: str = None, table_name_old: str = None, column_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_old is not None and not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if column_name_old is not None and not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.update', 'new': _denullify_dict({'key': key_new, 'position': position_new}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> list:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_new=key_new, position_new=position_new, key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class WapiAuth(APIObject):
-	gpk: str
-	type: str
-	token: str
-	is_own: bool
-	is_expired: bool
-	login_name: str
-	delete_date: str
-	description: str
-	expiration_date: str
-	last_login_date: str
-	type_description: str
-	last_generate_date: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.token, str):
-			raise ValueError(f"'token' of incorrect type. Expected str, got {type(self.token)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if not isinstance(self.delete_date, str):
-			raise ValueError(f"'delete_date' of incorrect type. Expected str, got {type(self.delete_date)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.expiration_date is not None and not isinstance(self.expiration_date, str):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(self.expiration_date)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if not isinstance(self.type_description, str):
-			raise ValueError(f"'type_description' of incorrect type. Expected str, got {type(self.type_description)}")
-		if not isinstance(self.last_generate_date, str):
-			raise ValueError(f"'last_generate_date' of incorrect type. Expected str, got {type(self.last_generate_date)}")
-
-	@staticmethod
-	def create_ta(login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		return {'name': 'cntl.wapi_auth.create', 'new': _denullify_dict({'login_name': login_name_new, 'description': description_new, 'expiration_date': expiration_date_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(login_name_new=login_name_new, description_new=description_new, expiration_date_new=expiration_date_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.wapi_auth.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'is_own': is_own_old, 'is_expired': is_expired_old, 'login_name': login_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, is_own_old=is_own_old, is_expired_old=is_expired_old, login_name_old=login_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.update', 'new': _denullify_dict({'description': description_new, 'expiration_date': expiration_date_new, 'do_refresh_token': do_refresh_token_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, expiration_date_new=expiration_date_new, do_refresh_token_new=do_refresh_token_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2group(APIObject):
-	gpk: str
-	is_own: bool
-	group_name: str
-	mgr_login_name: str
-	parent_group_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-		if self.parent_mgr_login_name is not None and not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def bulk_delete_ta(mgr_login_name_old: str) -> dict:
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2group.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, mgr_login_name_old: str) -> list:
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(group_name_list_new: list = None, mgr_login_name_list_new: list = None, group_name_old: str = None, mgr_login_name_old: str = None, group_name_list_old: list = None, mgr_login_name_list_old: list = None) -> dict:
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if mgr_login_name_list_new is not None and not (isinstance(mgr_login_name_list_new, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_new)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-
-		return {'name': 'cntl.mgr2group.bulk_update', 'new': _denullify_dict({'group_name_list': group_name_list_new, 'mgr_login_name_list': mgr_login_name_list_new}), 'old': _denullify_dict({'group_name': group_name_old, 'mgr_login_name': mgr_login_name_old, 'group_name_list': group_name_list_old, 'mgr_login_name_list': mgr_login_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, group_name_list_new: list = None, mgr_login_name_list_new: list = None, group_name_old: str = None, mgr_login_name_old: str = None, group_name_list_old: list = None, mgr_login_name_list_old: list = None) -> list:
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if mgr_login_name_list_new is not None and not (isinstance(mgr_login_name_list_new, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_new)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(group_name_list_new=group_name_list_new, mgr_login_name_list_new=mgr_login_name_list_new, group_name_old=group_name_old, mgr_login_name_old=mgr_login_name_old, group_name_list_old=group_name_list_old, mgr_login_name_list_old=mgr_login_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(group_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2group.create', 'new': _denullify_dict({'group_name': group_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, group_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(group_name_new=group_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(group_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'group_name': group_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, group_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(group_name_old=group_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Group(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_sub: bool
-	sub_id: str
-	is_admin: bool
-	description: str
-	do_idm_sync: bool
-	parent_name: str
-	ou_short_name: str
-	idm_description: str
-	idm_sync_last_ts: str
-	idm_sync_is_active: bool
-	idm_sync_last_state: str
-	idm_sync_max_mgr_count: int
-	idm_sync_last_successful_ts: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if not isinstance(self.is_admin, bool):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(self.is_admin)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.do_idm_sync, bool):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(self.do_idm_sync)}")
-		if not isinstance(self.parent_name, str):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(self.parent_name)}")
-		if self.ou_short_name is not None and not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if self.idm_description is not None and not isinstance(self.idm_description, str):
-			raise ValueError(f"'idm_description' of incorrect type. Expected str, got {type(self.idm_description)}")
-		if self.idm_sync_last_ts is not None and not isinstance(self.idm_sync_last_ts, str):
-			raise ValueError(f"'idm_sync_last_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_ts)}")
-		if not isinstance(self.idm_sync_is_active, bool):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(self.idm_sync_is_active)}")
-		if self.idm_sync_last_state is not None and not isinstance(self.idm_sync_last_state, str):
-			raise ValueError(f"'idm_sync_last_state' of incorrect type. Expected str, got {type(self.idm_sync_last_state)}")
-		if not isinstance(self.idm_sync_max_mgr_count, int):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(self.idm_sync_max_mgr_count)}")
-		if self.idm_sync_last_successful_ts is not None and not isinstance(self.idm_sync_last_successful_ts, str):
-			raise ValueError(f"'idm_sync_last_successful_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_successful_ts)}")
-
-	@staticmethod
-	def create_ta(name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-
-		return {'name': 'cntl.group.create', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'parent_name': parent_name_new, 'ou_short_name': ou_short_name_new, 'do_copy_assignments': do_copy_assignments_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, parent_name_new=parent_name_new, ou_short_name_new=ou_short_name_new, do_copy_assignments_new=do_copy_assignments_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str) or isinstance(name_old, ExplicitNull)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'sub_id': sub_id_old, 'is_admin': is_admin_old, 'name_list': name_list_old, 'do_idm_sync': do_idm_sync_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'sub_id_list': sub_id_list_old, 'fetch_offset': fetch_offset_old, 'ou_short_name': ou_short_name_old, 'sub_id_regexp': sub_id_regexp_old, 'parent_name_list': parent_name_list_old, 'filter_params_dict': filter_params_dict_old, 'idm_sync_is_active': idm_sync_is_active_old, 'is_admin_or_is_own': is_admin_or_is_own_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str) or isinstance(name_old, ExplicitNull)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, is_own_old=is_own_old, is_sub_old=is_sub_old, sub_id_old=sub_id_old, is_admin_old=is_admin_old, name_list_old=name_list_old, do_idm_sync_old=do_idm_sync_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, sub_id_list_old=sub_id_list_old, fetch_offset_old=fetch_offset_old, ou_short_name_old=ou_short_name_old, sub_id_regexp_old=sub_id_regexp_old, parent_name_list_old=parent_name_list_old, filter_params_dict_old=filter_params_dict_old, idm_sync_is_active_old=idm_sync_is_active_old, is_admin_or_is_own_old=is_admin_or_is_own_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.update', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'ou_short_name': ou_short_name_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, ou_short_name_new=ou_short_name_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2ou(APIObject):
-	gpk: str
-	is_own: bool
-	is_sub: bool
-	ou_short_name: str
-	mgr_login_name: str
-	parent_ou_short_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_ou_short_name, str):
-			raise ValueError(f"'parent_ou_short_name' of incorrect type. Expected str, got {type(self.parent_ou_short_name)}")
-		if not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def create_ta(ou_short_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2ou.create', 'new': _denullify_dict({'ou_short_name': ou_short_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ou_short_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ou_short_name_new=ou_short_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_sub_old=is_sub_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.update', 'new': _denullify_dict({'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ou_short_name_new=ou_short_name_new, ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrDef(APIObject):
-	gpk: str
-	key_word: str
-	data_type: str
-	object_type_fq_name: str
-	ins_trg_func_fq_name: str
-	upd_trg_func_fq_name: str
-	ref_object_type_fq_name: str
-	object_type_ref_attribute_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if self.ins_trg_func_fq_name is not None and not isinstance(self.ins_trg_func_fq_name, str):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(self.ins_trg_func_fq_name)}")
-		if self.upd_trg_func_fq_name is not None and not isinstance(self.upd_trg_func_fq_name, str):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(self.upd_trg_func_fq_name)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-		if not isinstance(self.object_type_ref_attribute_name, str):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(self.object_type_ref_attribute_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_ref_attribute_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_ref_attribute_name_new, str)):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(object_type_ref_attribute_name_new)}")
-
-		return {'name': 'cntl.ot_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_ref_attribute_name': object_type_ref_attribute_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_ref_attribute_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_ref_attribute_name_new, str)):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(object_type_ref_attribute_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_ref_attribute_name_new=object_type_ref_attribute_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, key_word_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'key_word': key_word_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, key_word_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, key_word_old=key_word_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_ref_attribute_name_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_ref_attribute_name_new is not None and not (isinstance(object_type_ref_attribute_name_new, str)):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(object_type_ref_attribute_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_ref_attribute_name': object_type_ref_attribute_name_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_ref_attribute_name_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_ref_attribute_name_new is not None and not (isinstance(object_type_ref_attribute_name_new, str)):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(object_type_ref_attribute_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_ref_attribute_name_new=object_type_ref_attribute_name_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrKey(APIObject):
-	set_mode: int
-	display_mode: int
-	default_value: str
-	val_is_unique: bool
-	ref_object_gfk: str
-	val_is_nullable: bool
-	display_position: int
-	permission_fq_name: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-	ref_object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.set_mode, int):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(self.set_mode)}")
-		if not isinstance(self.display_mode, int):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(self.display_mode)}")
-		if self.default_value is not None and not isinstance(self.default_value, str):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(self.default_value)}")
-		if not isinstance(self.val_is_unique, bool):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(self.val_is_unique)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.val_is_nullable, bool):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(self.val_is_nullable)}")
-		if not isinstance(self.display_position, int):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(self.display_position)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		return {'name': 'cntl.ot_attr_key.create', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> dict:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> list:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, ref_object_gfk_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ref_object_type_fq_name_old: str = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ref_object_gfk': ref_object_gfk_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, ref_object_gfk_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ref_object_type_fq_name_old: str = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ref_object_gfk_old=ref_object_gfk_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.update', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrVal(APIObject):
-	value: str
-	data_type: str
-	object_gfk: str
-	ref_object_gfk: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-
-	@staticmethod
-	def bulk_update_ta(object_gfk_old: str) -> dict:
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-
-		return {'name': 'cntl.ot_attr_val.bulk_update', 'new': _denullify_dict({}), 'old': _denullify_dict({'object_gfk': object_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, object_gfk_old: str) -> list:
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(object_gfk_old=object_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'value_range': value_range_old, 'fetch_offset': fetch_offset_old, 'value_operator': value_operator_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old, 'ot_attr_def_key_word_list': ot_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, value_range_old=value_range_old, fetch_offset_old=fetch_offset_old, value_operator_old=value_operator_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old, ot_attr_def_key_word_list_old=ot_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Replication(APIObject):
-	gpk: str
-	name: str
-	oper_mode: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.oper_mode, str):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(self.oper_mode)}")
-
-	@staticmethod
-	def create_ta(name_new: str, oper_mode_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		return {'name': 'cntl.replication.create', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, oper_mode_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, oper_mode_new=oper_mode_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, oper_mode_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, oper_mode_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.replication.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'oper_mode': oper_mode_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, oper_mode_old=oper_mode_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.update', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, oper_mode_new=oper_mode_new, name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ReplicationPub2sub(APIObject):
-	gpk: str
-	do_init: bool
-	publisher_fqdn: str
-	subscriber_fqdn: str
-	replication_name: str
-	replication_oper_mode: str
-	replication_slot_suffix: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.do_init, bool):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(self.do_init)}")
-		if not isinstance(self.publisher_fqdn, str):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(self.publisher_fqdn)}")
-		if not isinstance(self.subscriber_fqdn, str):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(self.subscriber_fqdn)}")
-		if not isinstance(self.replication_name, str):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(self.replication_name)}")
-		if not isinstance(self.replication_oper_mode, str):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(self.replication_oper_mode)}")
-		if not isinstance(self.replication_slot_suffix, str):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(self.replication_slot_suffix)}")
-
-	@staticmethod
-	def create_ta(publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		return {'name': 'cntl.replication_pub2sub.create', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, do_init_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, publisher_fqdn_old: str = None, replication_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, replication_oper_mode_old: str = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if publisher_fqdn_old is not None and not (isinstance(publisher_fqdn_old, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_old)}")
-		if replication_name_old is not None and not (isinstance(replication_name_old, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'do_init': do_init_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'publisher_fqdn': publisher_fqdn_old, 'replication_name': replication_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'replication_oper_mode': replication_oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, do_init_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, publisher_fqdn_old: str = None, replication_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, replication_oper_mode_old: str = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if publisher_fqdn_old is not None and not (isinstance(publisher_fqdn_old, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_old)}")
-		if replication_name_old is not None and not (isinstance(replication_name_old, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, do_init_old=do_init_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, publisher_fqdn_old=publisher_fqdn_old, replication_name_old=replication_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, replication_oper_mode_old=replication_oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.update', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'do_init_is_recursive': do_init_is_recursive_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, do_init_is_recursive_new=do_init_is_recursive_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	gpk: str
-	name: str
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	tag: str
-	name: str
-	is_active: bool
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def create_ta(tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> dict:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		return {'name': 'cntl.language.create', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> list:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(tag_old: str) -> dict:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, tag_old: str) -> list:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> dict:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.update', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> list:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrDef(APIObject):
-	key_word: str
-	is_static: bool
-	is_primary: bool
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.is_static, bool):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(self.is_static)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'is_static': is_static_new, 'is_primary': is_primary_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, is_static_new=is_static_new, is_primary_new=is_primary_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(key_word_old: str = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None) -> dict:
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'is_static': is_static_old, 'is_primary': is_primary_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, key_word_old: str = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None) -> list:
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(key_word_old=key_word_old, is_static_old=is_static_old, is_primary_old=is_primary_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrVal(APIObject):
-	value: str
-	object_gfk: str
-	language_tag: str
-	object_type_fq_name: str
-	ot_lang_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_lang_attr_def_key_word, str):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_lang_attr_def_key_word)}")
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_tag': language_tag_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'use_transaction_language': use_transaction_language_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old, 'ot_lang_attr_def_key_word_list': ot_lang_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_tag_old=language_tag_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, use_transaction_language_old=use_transaction_language_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old, ot_lang_attr_def_key_word_list_old=ot_lang_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'object_gfk': object_gfk_old, 'language_tag': language_tag_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, object_gfk_old=object_gfk_old, language_tag_old=language_tag_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/dhcpcfg.py b/4.0/golang/dhcpcfg.py
deleted file mode 100644
index ed54c8a..0000000
--- a/4.0/golang/dhcpcfg.py
+++ /dev/null
@@ -1,277 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Operator(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dhcpcfg.operator.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpcfg.operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Dt2operator2dt(APIObject):
-	gpk: str
-	operator: str
-	left_data_type: str
-	right_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, left_data_type_new: str, right_data_type_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.create', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, left_data_type_new: str, right_data_type_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str) -> dict:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str) -> list:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, operator_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, left_data_type_old: str = None, right_data_type_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if operator_old is not None and not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if left_data_type_old is not None and not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if right_data_type_old is not None and not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'operator': operator_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, operator_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, left_data_type_old: str = None, right_data_type_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if operator_old is not None and not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if left_data_type_old is not None and not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if right_data_type_old is not None and not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, operator_old=operator_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.update', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/dhcpv4.py b/4.0/golang/dhcpv4.py
deleted file mode 100644
index 338ba29..0000000
--- a/4.0/golang/dhcpv4.py
+++ /dev/null
@@ -1,1476 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GlobalOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	name: str
-	data_type: str
-	reference: str
-	description: str
-	is_generated: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if self.reference is not None and not isinstance(self.reference, str):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(self.reference)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_generated, bool):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(self.is_generated)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		return {'name': 'dhcpv4.global_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.global_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_generated': is_generated_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_generated_old=is_generated_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Lease(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	is_expired: bool
-	is_offered: bool
-	ts_expires: str
-	fqdn_is_dhcp: bool
-	ip_addr_value: str
-	ip_subnet_cidr: str
-	is_static_addr: bool
-	is_static_fqdn: bool
-	leasetime_days: int
-	mac_addr_value: str
-	ip_addr_is_dhcp: bool
-	leasetime_hours: int
-	ts_last_changed: str
-	adm_status_descr: str
-	client_identifier: str
-	leasetime_minutes: int
-	oper_status_descr: str
-	client_options_dict: dict
-	server_options_dict: dict
-	always_match_by_mac_addr: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.fqdn_value is not None and not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.is_offered, bool):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(self.is_offered)}")
-		if not isinstance(self.ts_expires, str):
-			raise ValueError(f"'ts_expires' of incorrect type. Expected str, got {type(self.ts_expires)}")
-		if not isinstance(self.fqdn_is_dhcp, bool):
-			raise ValueError(f"'fqdn_is_dhcp' of incorrect type. Expected bool, got {type(self.fqdn_is_dhcp)}")
-		if self.ip_addr_value is not None and not isinstance(self.ip_addr_value, str):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(self.ip_addr_value)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-		if not isinstance(self.is_static_addr, bool):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(self.is_static_addr)}")
-		if not isinstance(self.is_static_fqdn, bool):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(self.is_static_fqdn)}")
-		if self.leasetime_days is not None and not isinstance(self.leasetime_days, int):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(self.leasetime_days)}")
-		if self.mac_addr_value is not None and not isinstance(self.mac_addr_value, str):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(self.mac_addr_value)}")
-		if not isinstance(self.ip_addr_is_dhcp, bool):
-			raise ValueError(f"'ip_addr_is_dhcp' of incorrect type. Expected bool, got {type(self.ip_addr_is_dhcp)}")
-		if self.leasetime_hours is not None and not isinstance(self.leasetime_hours, int):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(self.leasetime_hours)}")
-		if not isinstance(self.ts_last_changed, str):
-			raise ValueError(f"'ts_last_changed' of incorrect type. Expected str, got {type(self.ts_last_changed)}")
-		if self.adm_status_descr is not None and not isinstance(self.adm_status_descr, str):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(self.adm_status_descr)}")
-		if self.client_identifier is not None and not isinstance(self.client_identifier, str):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(self.client_identifier)}")
-		if self.leasetime_minutes is not None and not isinstance(self.leasetime_minutes, int):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(self.leasetime_minutes)}")
-		if self.oper_status_descr is not None and not isinstance(self.oper_status_descr, str):
-			raise ValueError(f"'oper_status_descr' of incorrect type. Expected str, got {type(self.oper_status_descr)}")
-		if self.client_options_dict is not None and not isinstance(self.client_options_dict, dict):
-			raise ValueError(f"'client_options_dict' of incorrect type. Expected dict, got {type(self.client_options_dict)}")
-		if self.server_options_dict is not None and not isinstance(self.server_options_dict, dict):
-			raise ValueError(f"'server_options_dict' of incorrect type. Expected dict, got {type(self.server_options_dict)}")
-		if not isinstance(self.always_match_by_mac_addr, bool):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(self.always_match_by_mac_addr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-
-		return {'name': 'dhcpv4.lease.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old, 'is_static_addr': is_static_addr_old, 'is_static_fqdn': is_static_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old, is_static_addr_old=is_static_addr_old, is_static_fqdn_old=is_static_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.lease.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> dict:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		return {'name': 'dhcpv4.lease.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'leasetime_days': leasetime_days_new, 'mac_addr_value': mac_addr_value_new, 'leasetime_hours': leasetime_hours_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'leasetime_minutes': leasetime_minutes_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> list:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, leasetime_days_new=leasetime_days_new, mac_addr_value_new=mac_addr_value_new, leasetime_hours_new=leasetime_hours_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, leasetime_minutes_new=leasetime_minutes_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_expired': is_expired_old, 'is_offered': is_offered_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'is_static_addr': is_static_addr_old, 'is_static_fqdn': is_static_fqdn_old, 'mac_addr_value': mac_addr_value_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_expired_old=is_expired_old, is_offered_old=is_offered_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, is_static_addr_old=is_static_addr_old, is_static_fqdn_old=is_static_fqdn_old, mac_addr_value_old=mac_addr_value_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> dict:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.update', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'leasetime_days': leasetime_days_new, 'mac_addr_value': mac_addr_value_new, 'leasetime_hours': leasetime_hours_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'leasetime_minutes': leasetime_minutes_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> list:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, leasetime_days_new=leasetime_days_new, mac_addr_value_new=mac_addr_value_new, leasetime_hours_new=leasetime_hours_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, leasetime_minutes_new=leasetime_minutes_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	priority: int
-	code_data_type: str
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.subnet_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.og.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.og.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(name_new: str, ip_subnet_cidr_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.og.create', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, ip_subnet_cidr_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.update', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	code_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		return {'name': 'dhcpv4.group_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	sn_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.sn_opt_gfk, str):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(self.sn_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'sn_opt_gfk': sn_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, sn_opt_gfk_old=sn_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	og_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.og_opt_gfk, str):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(self.og_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.group_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'og_opt_gfk': og_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, og_opt_gfk_old=og_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og2lease(APIObject):
-	gpk: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	lease_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.lease_gfk, str):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(self.lease_gfk)}")
-
-	@staticmethod
-	def create_ta(og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> dict:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		return {'name': 'dhcpv4.og2lease.create', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> list:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og2lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> dict:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.update', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> list:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/dns.py b/4.0/golang/dns.py
deleted file mode 100644
index ef71d29..0000000
--- a/4.0/golang/dns.py
+++ /dev/null
@@ -1,1383 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Zone(APIObject):
-	gpk: str
-	fqdn: str
-	is_own: bool
-	is_apex: bool
-	nsec3_salt: str
-	description: str
-	ns_set_name: str
-	nsec3_itcount: int
-	dnssec_do_sign: bool
-	soa_data_retry: int
-	nsec3_hash_algo: int
-	soa_data_expire: int
-	soa_data_serial: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	dnssec_do_enforce: bool
-	dflt_ttl_rrt_dbext: int
-	dflt_ttl_rrt_dbint: int
-	soa_data_hostmaster: str
-	dnssec_ksk_rrs_are_published: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_apex, bool):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(self.is_apex)}")
-		if self.nsec3_salt is not None and not isinstance(self.nsec3_salt, str):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(self.nsec3_salt)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.ns_set_name is not None and not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.nsec3_itcount, int):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(self.nsec3_itcount)}")
-		if not isinstance(self.dnssec_do_sign, bool):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(self.dnssec_do_sign)}")
-		if self.soa_data_retry is not None and not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.nsec3_hash_algo, int):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(self.nsec3_hash_algo)}")
-		if self.soa_data_expire is not None and not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_serial, int):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(self.soa_data_serial)}")
-		if self.soa_data_minimum is not None and not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if self.soa_data_refresh is not None and not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.dnssec_do_enforce, bool):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(self.dnssec_do_enforce)}")
-		if not isinstance(self.dflt_ttl_rrt_dbext, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbext)}")
-		if not isinstance(self.dflt_ttl_rrt_dbint, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbint)}")
-		if self.soa_data_hostmaster is not None and not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.dnssec_ksk_rrs_are_published, bool):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(self.dnssec_ksk_rrs_are_published)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		return {'name': 'dns.zone.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fqdn_old: str = None, is_own_old: bool = None, is_apex_old: bool = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.zone.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fqdn': fqdn_old, 'is_own': is_own_old, 'is_apex': is_apex_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'dnssec_do_enforce': dnssec_do_enforce_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fqdn_old: str = None, is_own_old: bool = None, is_apex_old: bool = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fqdn_old=fqdn_old, is_own_old=is_own_old, is_apex_old=is_apex_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, dnssec_do_enforce_old=dnssec_do_enforce_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> dict:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.update', 'new': _denullify_dict({'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'reset_rr_ttls': reset_rr_ttls_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_serial': soa_data_serial_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> list:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, reset_rr_ttls_new=reset_rr_ttls_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_serial_new=soa_data_serial_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn(APIObject):
-	gpk: str
-	type: str
-	zone: str
-	label: str
-	value: str
-	has_rr: bool
-	is_own: bool
-	tree_level: int
-	value_idna: str
-	description: str
-	parent_value: str
-	type_is_dhcp: bool
-	type_is_host: bool
-	root_node_set: list
-	type_rad_type: int
-	sub_fqdn_count: int
-	type_is_wildcard: bool
-	type_is_nonterminal: bool
-	is_empty_nonterminal: bool
-	rr_chain_target_is_own: bool
-	rr_chain_target_subnet_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if self.label is not None and not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.has_rr, bool):
-			raise ValueError(f"'has_rr' of incorrect type. Expected bool, got {type(self.has_rr)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.value_idna, str):
-			raise ValueError(f"'value_idna' of incorrect type. Expected str, got {type(self.value_idna)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.parent_value is not None and not isinstance(self.parent_value, str):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(self.parent_value)}")
-		if not isinstance(self.type_is_dhcp, bool):
-			raise ValueError(f"'type_is_dhcp' of incorrect type. Expected bool, got {type(self.type_is_dhcp)}")
-		if not isinstance(self.type_is_host, bool):
-			raise ValueError(f"'type_is_host' of incorrect type. Expected bool, got {type(self.type_is_host)}")
-		if not isinstance(self.root_node_set, list):
-			raise ValueError(f"'root_node_set' of incorrect type. Expected list, got {type(self.root_node_set)}")
-		if not isinstance(self.type_rad_type, int):
-			raise ValueError(f"'type_rad_type' of incorrect type. Expected int, got {type(self.type_rad_type)}")
-		if not isinstance(self.sub_fqdn_count, int):
-			raise ValueError(f"'sub_fqdn_count' of incorrect type. Expected int, got {type(self.sub_fqdn_count)}")
-		if not isinstance(self.type_is_wildcard, bool):
-			raise ValueError(f"'type_is_wildcard' of incorrect type. Expected bool, got {type(self.type_is_wildcard)}")
-		if not isinstance(self.type_is_nonterminal, bool):
-			raise ValueError(f"'type_is_nonterminal' of incorrect type. Expected bool, got {type(self.type_is_nonterminal)}")
-		if not isinstance(self.is_empty_nonterminal, bool):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(self.is_empty_nonterminal)}")
-		if not isinstance(self.rr_chain_target_is_own, bool):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(self.rr_chain_target_is_own)}")
-		if self.rr_chain_target_subnet_list is not None and not isinstance(self.rr_chain_target_subnet_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_list)}")
-
-	@staticmethod
-	def create_ta(type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dns.fqdn.create', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, value_new=value_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.fqdn.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old, try_del_parent_old=try_del_parent_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, zone_old: str = None, value_old: str = None, is_own_old: bool = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_list_old is not None and not (isinstance(rr_chain_target_subnet_list_old, list) or isinstance(rr_chain_target_subnet_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_list_old)}")
-
-		return {'name': 'dns.fqdn.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'zone': zone_old, 'value': value_old, 'is_own': is_own_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'label_regexp': label_regexp_old, 'parent_value': parent_value_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_empty_nonterminal': is_empty_nonterminal_old, 'rr_chain_target_is_own': rr_chain_target_is_own_old, 'rr_chain_target_subnet_list': rr_chain_target_subnet_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, zone_old: str = None, value_old: str = None, is_own_old: bool = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_list_old is not None and not (isinstance(rr_chain_target_subnet_list_old, list) or isinstance(rr_chain_target_subnet_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, zone_old=zone_old, value_old=value_old, is_own_old=is_own_old, label_list_old=label_list_old, tree_level_old=tree_level_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, label_regexp_old=label_regexp_old, parent_value_old=parent_value_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_empty_nonterminal_old=is_empty_nonterminal_old, rr_chain_target_is_own_old=rr_chain_target_is_own_old, rr_chain_target_subnet_list_old=rr_chain_target_subnet_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		return {'name': 'dns.fqdn.update', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, value_new=value_new, description_new=description_new, value_old=value_old, try_del_parent_old=try_del_parent_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpAddr(APIObject):
-	gpk: str
-	cidr: str
-	type: str
-	value: str
-	is_own: bool
-	is_dhcp: bool
-	is_reserved: bool
-	is_rr_target: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_reserved, bool):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(self.is_reserved)}")
-		if not isinstance(self.is_rr_target, bool):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(self.is_rr_target)}")
-
-	@staticmethod
-	def bulk_create_ta(value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		return {'name': 'dns.ip_addr.bulk_create', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_stop': value_stop_new, 'is_reserved': is_reserved_new, 'value_start': value_start_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_create(cls, api_session: APISession, value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_create_ta(is_dhcp_new=is_dhcp_new, value_stop_new=value_stop_new, is_reserved_new=is_reserved_new, value_start_new=value_start_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_delete_ta(value_start_old: str, value_stop_old: str = None) -> dict:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, value_start_old: str, value_stop_old: str = None) -> list:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_cidr_old: str = None, value_stop_old: str = None, value_start_old: str = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_cidr': value_cidr_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({'value_cidr': value_cidr_old, 'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_cidr_old: str = None, value_stop_old: str = None, value_start_old: str = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(is_dhcp_new=is_dhcp_new, value_cidr_new=value_cidr_new, is_reserved_new=is_reserved_new, value_cidr_old=value_cidr_old, value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, value_cidr_old: str = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.ip_addr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'value_cidr': value_cidr_old, 'fetch_limit': fetch_limit_old, 'is_reserved': is_reserved_old, 'fetch_offset': fetch_offset_old, 'is_rr_target': is_rr_target_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, value_cidr_old: str = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, value_cidr_old=value_cidr_old, fetch_limit_old=fetch_limit_old, is_reserved_old=is_reserved_old, fetch_offset_old=fetch_offset_old, is_rr_target_old=is_rr_target_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	gpk: str
-	ttl: int
-	data: str
-	fqdn: str
-	type: str
-	zone: str
-	is_own: bool
-	is_auth: bool
-	fqdn_type: str
-	host_is_nws: bool
-	target_fqdn: str
-	target_ipaddr: str
-	ttl_reset_date: str
-	ttl_reset_days: int
-	fqdn_description: str
-	ttl_zone_default: int
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-	rr_chain_target_subnet_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_auth, bool):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(self.is_auth)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.host_is_nws, bool):
-			raise ValueError(f"'host_is_nws' of incorrect type. Expected bool, got {type(self.host_is_nws)}")
-		if self.target_fqdn is not None and not isinstance(self.target_fqdn, str):
-			raise ValueError(f"'target_fqdn' of incorrect type. Expected str, got {type(self.target_fqdn)}")
-		if self.target_ipaddr is not None and not isinstance(self.target_ipaddr, str):
-			raise ValueError(f"'target_ipaddr' of incorrect type. Expected str, got {type(self.target_ipaddr)}")
-		if self.ttl_reset_date is not None and not isinstance(self.ttl_reset_date, str):
-			raise ValueError(f"'ttl_reset_date' of incorrect type. Expected str, got {type(self.ttl_reset_date)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.fqdn_description is not None and not isinstance(self.fqdn_description, str):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(self.fqdn_description)}")
-		if not isinstance(self.ttl_zone_default, int):
-			raise ValueError(f"'ttl_zone_default' of incorrect type. Expected int, got {type(self.ttl_zone_default)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-		if self.rr_chain_target_subnet_list is not None and not isinstance(self.rr_chain_target_subnet_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dns.record.create', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.record.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.record.imp', 'new': _denullify_dict({'fqdn': fqdn_new, 'fqdn_type': fqdn_type_new, 'import_data': import_data_new, 'strict_mode': strict_mode_new, 'fqdn_description': fqdn_description_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(fqdn_new=fqdn_new, fqdn_type_new=fqdn_type_new, import_data_new=import_data_new, strict_mode_new=strict_mode_new, fqdn_description_new=fqdn_description_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, data_old: str = None, type_old: str = None, zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_old is not None and not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_list_old is not None and not (isinstance(rr_chain_target_subnet_list_old, list) or isinstance(rr_chain_target_subnet_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_list_old)}")
-
-		return {'name': 'dns.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'data': data_old, 'type': type_old, 'zone': zone_old, 'is_own': is_own_old, 'is_auth': is_auth_old, 'data_list': data_list_old, 'do_nn_ttl': do_nn_ttl_old, 'fqdn_list': fqdn_list_old, 'type_list': type_list_old, 'data_regexp': data_regexp_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'fqdn_label_list': fqdn_label_list_old, 'fqdn_label_regexp': fqdn_label_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'rr_chain_target_subnet_list': rr_chain_target_subnet_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, data_old: str = None, type_old: str = None, zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_old is not None and not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_list_old is not None and not (isinstance(rr_chain_target_subnet_list_old, list) or isinstance(rr_chain_target_subnet_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, data_old=data_old, type_old=type_old, zone_old=zone_old, is_own_old=is_own_old, is_auth_old=is_auth_old, data_list_old=data_list_old, do_nn_ttl_old=do_nn_ttl_old, fqdn_list_old=fqdn_list_old, type_list_old=type_list_old, data_regexp_old=data_regexp_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, fqdn_label_list_old=fqdn_label_list_old, fqdn_label_regexp_old=fqdn_label_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_is_reverse_unique_old=target_is_reverse_unique_old, rr_chain_target_subnet_list_old=rr_chain_target_subnet_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		return {'name': 'dns.record.update', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2group(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def bulk_update_ta(fqdn_value_list_new: list = None, group_name_list_new: list = None, fqdn_value_old: str = None, group_name_old: str = None, fqdn_value_list_old: list = None, group_name_list_old: list = None) -> dict:
-		if fqdn_value_list_new is not None and not (isinstance(fqdn_value_list_new, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		return {'name': 'dns.fqdn2group.bulk_update', 'new': _denullify_dict({'fqdn_value_list': fqdn_value_list_new, 'group_name_list': group_name_list_new}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'group_name': group_name_old, 'fqdn_value_list': fqdn_value_list_old, 'group_name_list': group_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, fqdn_value_list_new: list = None, group_name_list_new: list = None, fqdn_value_old: str = None, group_name_old: str = None, fqdn_value_list_old: list = None, group_name_list_old: list = None) -> list:
-		if fqdn_value_list_new is not None and not (isinstance(fqdn_value_list_new, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(fqdn_value_list_new=fqdn_value_list_new, group_name_list_new=group_name_list_new, fqdn_value_old=fqdn_value_old, group_name_old=group_name_old, fqdn_value_list_old=fqdn_value_list_old, group_name_list_old=group_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, group_name_new: str) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'dns.fqdn2group.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, group_name_new: str) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, group_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'dns.fqdn2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, group_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fqdn_value_old: str = None, group_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fqdn_value': fqdn_value_old, 'group_name': group_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_value_list': fqdn_value_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fqdn_value_old: str = None, group_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fqdn_value_old=fqdn_value_old, group_name_old=group_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_value_list_old=fqdn_value_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2ou(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'dns.fqdn2ou.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fqdn_value_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fqdn_value': fqdn_value_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'ou_short_name': ou_short_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fqdn_value_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fqdn_value_old=fqdn_value_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, ou_short_name_old=ou_short_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordImp(APIObject):
-	ttl: int
-	type: str
-	data_list: str
-	ttl_reset_days: int
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.type is not None and not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.data_list is not None and not isinstance(self.data_list, str):
-			raise ValueError(f"'data_list' of incorrect type. Expected str, got {type(self.data_list)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.target_is_singleton is not None and not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self.target_is_reverse_unique is not None and not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
diff --git a/4.0/golang/dnscfg.py b/4.0/golang/dnscfg.py
deleted file mode 100644
index f8c75f9..0000000
--- a/4.0/golang/dnscfg.py
+++ /dev/null
@@ -1,1477 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class FqdnType(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_dhcp: bool
-	is_host: bool
-	_intname: str
-	position: int
-	rad_type: int
-	_groupname: str
-	description: str
-	is_wildcard: bool
-	is_nonterminal: bool
-	version_name_dict: dict
-	permission_fq_name: str
-	rad_type_description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_host, bool):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(self.is_host)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.rad_type, int):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(self.rad_type)}")
-		if not isinstance(self._groupname, str):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(self._groupname)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_wildcard, bool):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(self.is_wildcard)}")
-		if not isinstance(self.is_nonterminal, bool):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(self.is_nonterminal)}")
-		if not isinstance(self.version_name_dict, dict):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(self.version_name_dict)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if not isinstance(self.rad_type_description, str):
-			raise ValueError(f"'rad_type_description' of incorrect type. Expected str, got {type(self.rad_type_description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn_type.create', 'new': _denullify_dict({'name': name_new, 'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'is_host': is_host_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_wildcard': is_wildcard_old, 'fetch_offset': fetch_offset_old, 'rad_type_list': rad_type_list_old, 'is_nonterminal': is_nonterminal_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, is_host_old=is_host_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_wildcard_old=is_wildcard_old, fetch_offset_old=fetch_offset_old, rad_type_list_old=rad_type_list_old, is_nonterminal_old=is_nonterminal_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'version_name_dict': version_name_dict_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, version_name_dict_new=version_name_dict_new, permission_fq_name_new=permission_fq_name_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	name: str
-	rfc_info: str
-	num_value: int
-	is_internal: bool
-	is_addr_based: bool
-	is_name_based: bool
-	force_auto_dml: bool
-	fqdn_type_dflt: str
-	_fqdn_inttype_dflt: str
-	target_is_singleton_dflt: bool
-	target_is_reverse_unique_dflt: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.rfc_info is not None and not isinstance(self.rfc_info, str):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(self.rfc_info)}")
-		if not isinstance(self.num_value, int):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(self.num_value)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-		if not isinstance(self.is_addr_based, bool):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(self.is_addr_based)}")
-		if not isinstance(self.is_name_based, bool):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(self.is_name_based)}")
-		if not isinstance(self.force_auto_dml, bool):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(self.force_auto_dml)}")
-		if self.fqdn_type_dflt is not None and not isinstance(self.fqdn_type_dflt, str):
-			raise ValueError(f"'fqdn_type_dflt' of incorrect type. Expected str, got {type(self.fqdn_type_dflt)}")
-		if self._fqdn_inttype_dflt is not None and not isinstance(self._fqdn_inttype_dflt, str):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(self._fqdn_inttype_dflt)}")
-		if not isinstance(self.target_is_singleton_dflt, bool):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(self.target_is_singleton_dflt)}")
-		if not isinstance(self.target_is_reverse_unique_dflt, bool):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique_dflt)}")
-
-	@staticmethod
-	def create_ta(name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-
-		return {'name': 'dnscfg.record_type.create', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'is_addr_based': is_addr_based_old, 'is_name_based': is_name_based_old, 'force_auto_dml': force_auto_dml_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, is_addr_based_old=is_addr_based_old, is_name_based_old=is_name_based_old, force_auto_dml_old=force_auto_dml_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.update', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordInttype(APIObject):
-	gpk: str
-	is_own: bool
-	_intname: str
-	fqdn_type: str
-	description: str
-	record_type: str
-	_fqdn_inttype: str
-	target_fqdn_type: str
-	version_def_dict: dict
-	fqdn_is_singleton: bool
-	permission_fq_name: str
-	target_is_singleton: bool
-	_target_fqdn_inttype: str
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.record_type, str):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(self.record_type)}")
-		if not isinstance(self._fqdn_inttype, str):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(self._fqdn_inttype)}")
-		if self.target_fqdn_type is not None and not isinstance(self.target_fqdn_type, str):
-			raise ValueError(f"'target_fqdn_type' of incorrect type. Expected str, got {type(self.target_fqdn_type)}")
-		if not isinstance(self.version_def_dict, dict):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(self.version_def_dict)}")
-		if not isinstance(self.fqdn_is_singleton, bool):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(self.fqdn_is_singleton)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self._target_fqdn_inttype is not None and not isinstance(self._target_fqdn_inttype, str):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(self._target_fqdn_inttype)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-
-	@staticmethod
-	def create_ta(description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dnscfg.record_inttype.create', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, fqdn_is_singleton_new=fqdn_is_singleton_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		return {'name': 'dnscfg.record_inttype.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_type_list': fqdn_type_list_old, 'record_type_list': record_type_list_old, 'fqdn_is_singleton': fqdn_is_singleton_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_fqdn_type_list': target_fqdn_type_list_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'record_type_is_addr_based': record_type_is_addr_based_old, 'record_type_is_name_based': record_type_is_name_based_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_type_list_old=fqdn_type_list_old, record_type_list_old=record_type_list_old, fqdn_is_singleton_old=fqdn_is_singleton_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_fqdn_type_list_old=target_fqdn_type_list_old, target_is_reverse_unique_old=target_is_reverse_unique_old, record_type_is_addr_based_old=record_type_is_addr_based_old, record_type_is_name_based_old=record_type_is_name_based_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.update', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'version_def_dict': version_def_dict_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, version_def_dict_new=version_def_dict_new, fqdn_is_singleton_new=fqdn_is_singleton_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSet(APIObject):
-	gpk: str
-	name: str
-	description: str
-	soa_data_retry: int
-	soa_data_expire: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	soa_data_hostmaster: str
-	members_are_exclusive: bool
-	zone_data_is_external: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.members_are_exclusive, bool):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(self.members_are_exclusive)}")
-		if not isinstance(self.zone_data_is_external, bool):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(self.zone_data_is_external)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		return {'name': 'dnscfg.ns_set.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		return {'name': 'dnscfg.ns_set.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'soa_data_retry': soa_data_retry_old, 'soa_data_expire': soa_data_expire_old, 'soa_data_minimum': soa_data_minimum_old, 'soa_data_refresh': soa_data_refresh_old, 'filter_params_dict': filter_params_dict_old, 'soa_data_hostmaster': soa_data_hostmaster_old, 'sorting_params_list': sorting_params_list_old, 'members_are_exclusive': members_are_exclusive_old, 'zone_data_is_external': zone_data_is_external_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, soa_data_retry_old=soa_data_retry_old, soa_data_expire_old=soa_data_expire_old, soa_data_minimum_old=soa_data_minimum_old, soa_data_refresh_old=soa_data_refresh_old, filter_params_dict_old=filter_params_dict_old, soa_data_hostmaster_old=soa_data_hostmaster_old, sorting_params_list_old=sorting_params_list_old, members_are_exclusive_old=members_are_exclusive_old, zone_data_is_external_old=zone_data_is_external_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetMember(APIObject):
-	gpk: str
-	ns_fqdn: str
-	ns_set_name: str
-	ns_is_master: bool
-	ns_is_native: bool
-	ns_is_primary: bool
-	ns_is_registered: bool
-	ns_xfer_master_fqdn: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.ns_fqdn, str):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(self.ns_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.ns_is_master, bool):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(self.ns_is_master)}")
-		if not isinstance(self.ns_is_native, bool):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(self.ns_is_native)}")
-		if not isinstance(self.ns_is_primary, bool):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(self.ns_is_primary)}")
-		if not isinstance(self.ns_is_registered, bool):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(self.ns_is_registered)}")
-		if self.ns_xfer_master_fqdn is not None and not isinstance(self.ns_xfer_master_fqdn, str):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(self.ns_xfer_master_fqdn)}")
-
-	@staticmethod
-	def create_ta(ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		return {'name': 'dnscfg.ns_set_member.create', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ns_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, ns_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if ns_fqdn_old is not None and not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'ns_fqdn': ns_fqdn_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, ns_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if ns_fqdn_old is not None and not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, ns_fqdn_old=ns_fqdn_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.update', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2perm(APIObject):
-	gpk: str
-	fqdn: str
-	is_recursive: bool
-	is_zone_bound: bool
-	recursive_min_lvl: int
-	permission_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.is_zone_bound, bool):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(self.is_zone_bound)}")
-		if not isinstance(self.recursive_min_lvl, int):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(self.recursive_min_lvl)}")
-		if not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn2perm.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(permission_fq_name_old: str = None) -> dict:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, permission_fq_name_old: str = None) -> list:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> dict:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.update', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> list:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class FqdnTypeGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetHost(APIObject):
-	gpk: str
-	host_fqdn: str
-	ns_set_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.host_fqdn, str):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(self.host_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-
-	@staticmethod
-	def create_ta(host_fqdn_new: str, ns_set_name_new: str) -> dict:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		return {'name': 'dnscfg.ns_set_host.create', 'new': _denullify_dict({'host_fqdn': host_fqdn_new, 'ns_set_name': ns_set_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, host_fqdn_new: str, ns_set_name_new: str) -> list:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(host_fqdn_new=host_fqdn_new, ns_set_name_new=ns_set_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(host_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'host_fqdn': host_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, host_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(host_fqdn_old=host_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, host_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if host_fqdn_old is not None and not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'host_fqdn': host_fqdn_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, host_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if host_fqdn_old is not None and not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, host_fqdn_old=host_fqdn_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/dnssec.py b/4.0/golang/dnssec.py
deleted file mode 100644
index 0dc9dbe..0000000
--- a/4.0/golang/dnssec.py
+++ /dev/null
@@ -1,125 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class ZoneKey(APIObject):
-	gpk: str
-	tag: int
-	data: str
-	fqdn: str
-	flags: int
-	is_ksk: bool
-	is_active: bool
-	creation_ts: str
-	activation_ts: str
-	dnskey_rr_data: str
-	deactivation_ts: str
-	ds_rr_data_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.tag is not None and not isinstance(self.tag, int):
-			raise ValueError(f"'tag' of incorrect type. Expected int, got {type(self.tag)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.flags, int):
-			raise ValueError(f"'flags' of incorrect type. Expected int, got {type(self.flags)}")
-		if not isinstance(self.is_ksk, bool):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(self.is_ksk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.creation_ts, str):
-			raise ValueError(f"'creation_ts' of incorrect type. Expected str, got {type(self.creation_ts)}")
-		if self.activation_ts is not None and not isinstance(self.activation_ts, str):
-			raise ValueError(f"'activation_ts' of incorrect type. Expected str, got {type(self.activation_ts)}")
-		if not isinstance(self.dnskey_rr_data, str):
-			raise ValueError(f"'dnskey_rr_data' of incorrect type. Expected str, got {type(self.dnskey_rr_data)}")
-		if self.deactivation_ts is not None and not isinstance(self.deactivation_ts, str):
-			raise ValueError(f"'deactivation_ts' of incorrect type. Expected str, got {type(self.deactivation_ts)}")
-		if not isinstance(self.ds_rr_data_list, list):
-			raise ValueError(f"'ds_rr_data_list' of incorrect type. Expected list, got {type(self.ds_rr_data_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_ksk_new: bool) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		return {'name': 'dnssec.zone_key.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_ksk': is_ksk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_ksk_new: bool) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_ksk_new=is_ksk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dnssec.zone_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fqdn_old: str = None, is_ksk_old: bool = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-
-		return {'name': 'dnssec.zone_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fqdn': fqdn_old, 'is_ksk': is_ksk_old, 'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fqdn_old: str = None, is_ksk_old: bool = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fqdn_old=fqdn_old, is_ksk_old=is_ksk_old, is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/evlog.py b/4.0/golang/evlog.py
deleted file mode 100644
index 0141920..0000000
--- a/4.0/golang/evlog.py
+++ /dev/null
@@ -1,237 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	subject: str
-	short_name: str
-	committed_action: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.subject, str):
-			raise ValueError(f"'subject' of incorrect type. Expected str, got {type(self.subject)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.committed_action, str):
-			raise ValueError(f"'committed_action' of incorrect type. Expected str, got {type(self.committed_action)}")
-
-	@staticmethod
-	def create_ta(short_name_new: str) -> dict:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'evlog.record_type.create', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, short_name_new: str) -> list:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'evlog.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, short_name_new: str = None) -> dict:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.update', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, short_name_new: str = None) -> list:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	data: str
-	type: str
-	object_gfk: str
-	language_tag: str
-	ta_timestamp: str
-	mgr_login_name: str
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.ta_timestamp, str):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(self.ta_timestamp)}")
-		if self.mgr_login_name is not None and not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> dict:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'evlog.record.create', 'new': _denullify_dict({'text': text_new, 'type': type_new, 'object_pk': object_pk_new, 'object_gfk': object_gfk_new, 'ta_timestamp': ta_timestamp_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> list:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(text_new=text_new, type_new=type_new, object_pk_new=object_pk_new, object_gfk_new=object_gfk_new, ta_timestamp_new=ta_timestamp_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'evlog.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'top_n': top_n_old, 'type_list': type_list_old, 'object_gfk': object_gfk_old, 'ta_interval': ta_interval_old, 'language_tag': language_tag_old, 'ta_timestamp': ta_timestamp_old, 'mgr_login_name': mgr_login_name_old, 'top_n_from_newest': top_n_from_newest_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, top_n_old=top_n_old, type_list_old=type_list_old, object_gfk_old=object_gfk_old, ta_interval_old=ta_interval_old, language_tag_old=language_tag_old, ta_timestamp_old=ta_timestamp_old, mgr_login_name_old=mgr_login_name_old, top_n_from_newest_old=top_n_from_newest_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/macauth.py b/4.0/golang/macauth.py
deleted file mode 100644
index d596a2d..0000000
--- a/4.0/golang/macauth.py
+++ /dev/null
@@ -1,159 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Client(APIObject):
-	gpk: str
-	is_own: bool
-	wpa_key: str
-	bcd_name: str
-	mac_addr: str
-	description: str
-	last_login_date: str
-	last_login_node_info: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.wpa_key is not None and not isinstance(self.wpa_key, str):
-			raise ValueError(f"'wpa_key' of incorrect type. Expected str, got {type(self.wpa_key)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.mac_addr, str):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(self.mac_addr)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if self.last_login_node_info is not None and not isinstance(self.last_login_node_info, str):
-			raise ValueError(f"'last_login_node_info' of incorrect type. Expected str, got {type(self.last_login_node_info)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		return {'name': 'macauth.client.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(mac_addr_old: str) -> dict:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, mac_addr_old: str) -> list:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, mac_addr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, description_regexp_old: str = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if mac_addr_old is not None and not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-
-		return {'name': 'macauth.client.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'bcd_name': bcd_name_old, 'mac_addr': mac_addr_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'description_regexp': description_regexp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, mac_addr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, description_regexp_old: str = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if mac_addr_old is not None and not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, bcd_name_old=bcd_name_old, mac_addr_old=mac_addr_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, description_regexp_old=description_regexp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> dict:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.update', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> list:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/nd.py b/4.0/golang/nd.py
deleted file mode 100644
index 36adbe6..0000000
--- a/4.0/golang/nd.py
+++ /dev/null
@@ -1,4324 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class IpSubnet(APIObject):
-	bcd: str
-	gpk: str
-	cidr: str
-	type: str
-	is_own: bool
-	is_private: bool
-	description: str
-	is_routable: bool
-	is_container: bool
-	default_gateway: str
-	dhcp_lease_count: int
-	dns_addr_rr_count: int
-	dhcp_ip_addr_count: int
-	dns_addr_rsv_count: int
-	is_iana_registered: bool
-	auto_create_ip_address: bool
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_private, bool):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(self.is_private)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if not isinstance(self.is_container, bool):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(self.is_container)}")
-		if self.default_gateway is not None and not isinstance(self.default_gateway, str):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(self.default_gateway)}")
-		if not isinstance(self.dhcp_lease_count, int):
-			raise ValueError(f"'dhcp_lease_count' of incorrect type. Expected int, got {type(self.dhcp_lease_count)}")
-		if not isinstance(self.dns_addr_rr_count, int):
-			raise ValueError(f"'dns_addr_rr_count' of incorrect type. Expected int, got {type(self.dns_addr_rr_count)}")
-		if not isinstance(self.dhcp_ip_addr_count, int):
-			raise ValueError(f"'dhcp_ip_addr_count' of incorrect type. Expected int, got {type(self.dhcp_ip_addr_count)}")
-		if not isinstance(self.dns_addr_rsv_count, int):
-			raise ValueError(f"'dns_addr_rsv_count' of incorrect type. Expected int, got {type(self.dns_addr_rsv_count)}")
-		if not isinstance(self.is_iana_registered, bool):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(self.is_iana_registered)}")
-		if not isinstance(self.auto_create_ip_address, bool):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(self.auto_create_ip_address)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		return {'name': 'nd.ip_subnet.create', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'create_ipaddrs': create_ipaddrs_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new, 'auto_create_default_gateway': auto_create_default_gateway_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, create_ipaddrs_new=create_ipaddrs_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, auto_create_default_gateway_new=auto_create_default_gateway_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> dict:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		return {'name': 'nd.ip_subnet.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'cidr': cidr_old, 'delete_dns_rrs': delete_dns_rrs_old, 'delete_ipaddrs': delete_ipaddrs_old, 'delete_dhcp_objects': delete_dhcp_objects_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> list:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(cidr_old=cidr_old, delete_dns_rrs_old=delete_dns_rrs_old, delete_ipaddrs_old=delete_ipaddrs_old, delete_dhcp_objects_old=delete_dhcp_objects_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(bcd_old: str = None, gpk_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> dict:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		return {'name': 'nd.ip_subnet.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd': bcd_old, 'gpk': gpk_old, 'cidr': cidr_old, 'type': type_old, 'is_own': is_own_old, 'is_private': is_private_old, 'fetch_limit': fetch_limit_old, 'is_routable': is_routable_old, 'fetch_offset': fetch_offset_old, 'is_container': is_container_old, 'cidr_operator': cidr_operator_old, 'default_gateway': default_gateway_old, 'filter_params_dict': filter_params_dict_old, 'is_iana_registered': is_iana_registered_old, 'sorting_params_list': sorting_params_list_old, 'auto_create_ip_address': auto_create_ip_address_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, bcd_old: str = None, gpk_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> list:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(bcd_old=bcd_old, gpk_old=gpk_old, cidr_old=cidr_old, type_old=type_old, is_own_old=is_own_old, is_private_old=is_private_old, fetch_limit_old=fetch_limit_old, is_routable_old=is_routable_old, fetch_offset_old=fetch_offset_old, is_container_old=is_container_old, cidr_operator_old=cidr_operator_old, default_gateway_old=default_gateway_old, filter_params_dict_old=filter_params_dict_old, is_iana_registered_old=is_iana_registered_old, sorting_params_list_old=sorting_params_list_old, auto_create_ip_address_old=auto_create_ip_address_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		return {'name': 'nd.ip_subnet.update', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new}), 'old': _denullify_dict({'cidr': cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, cidr_old=cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	description: str
-	label_sortby: str
-	parent_fq_module: str
-	sub_module_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.label_sortby, str):
-			raise ValueError(f"'label_sortby' of incorrect type. Expected str, got {type(self.label_sortby)}")
-		if not isinstance(self.parent_fq_module, str):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(self.parent_fq_module)}")
-		if not isinstance(self.sub_module_count, int):
-			raise ValueError(f"'sub_module_count' of incorrect type. Expected int, got {type(self.sub_module_count)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, fq_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.slot.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'fq_name': fq_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'parent_fq_module': parent_fq_module_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, fq_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, fq_name_old=fq_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, parent_fq_module_old=parent_fq_module_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.slot.update', 'new': _denullify_dict({'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Floor(APIObject):
-	gpk: str
-	name: str
-	description: str
-	name_sortby: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, int):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(self.name_sortby)}")
-
-	@staticmethod
-	def create_ta(name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		return {'name': 'nd.floor.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.floor.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Room(APIObject):
-	gpk: str
-	bldg: str
-	name: str
-	floor: str
-	number: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.floor, str):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(self.floor)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.room.create', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bldg_old: str, number_old: str) -> dict:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bldg_old: str, number_old: str) -> list:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, bldg_old: str = None, name_old: str = None, floor_old: str = None, number_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.room.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'bldg': bldg_old, 'name': name_old, 'floor': floor_old, 'number': number_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, bldg_old: str = None, name_old: str = None, floor_old: str = None, number_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, bldg_old=bldg_old, name_old=name_old, floor_old=floor_old, number_old=number_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.update', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module(APIObject):
-	ap: str
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	is_child: bool
-	root_gfk: str
-	is_active: bool
-	tree_level: int
-	description: str
-	has_unq_name: bool
-	is_loc_depdnt: bool
-	root_node_set: list
-	parent_fq_slot: str
-
-	def __post_init__(self):
-		if self.ap is not None and not isinstance(self.ap, str):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(self.ap)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.root_gfk, str):
-			raise ValueError(f"'root_gfk' of incorrect type. Expected str, got {type(self.root_gfk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-		if not isinstance(self.root_node_set, list):
-			raise ValueError(f"'root_node_set' of incorrect type. Expected list, got {type(self.root_node_set)}")
-		if self.parent_fq_slot is not None and not isinstance(self.parent_fq_slot, str):
-			raise ValueError(f"'parent_fq_slot' of incorrect type. Expected str, got {type(self.parent_fq_slot)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, ap_new: str = None, bldg_new: str = None, room_new: str = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		return {'name': 'nd.module.create', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'type': type_new, 'fq_name': fq_name_new, 'description': description_new, 'attributes_dict': attributes_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, ap_new: str = None, bldg_new: str = None, room_new: str = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, attributes_dict_new=attributes_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> dict:
-		if ap_old is not None and not (isinstance(ap_old, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		return {'name': 'nd.module.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'force_delete_devs': force_delete_devs_old, 'force_disconnect_pp': force_disconnect_pp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> list:
-		if ap_old is not None and not (isinstance(ap_old, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, force_delete_devs_old=force_delete_devs_old, force_disconnect_pp_old=force_disconnect_pp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, bldg_old: str = None, room_old: str = None, type_old: str = None, fq_name_old: str = None, is_child_old: bool = None, is_active_old: bool = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str) or isinstance(fq_name_old, ExplicitNull)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'bldg': bldg_old, 'room': room_old, 'type': type_old, 'fq_name': fq_name_old, 'is_child': is_child_old, 'is_active': is_active_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'has_unq_name': has_unq_name_old, 'label_regexp': label_regexp_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, bldg_old: str = None, room_old: str = None, type_old: str = None, fq_name_old: str = None, is_child_old: bool = None, is_active_old: bool = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str) or isinstance(fq_name_old, ExplicitNull)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, bldg_old=bldg_old, room_old=room_old, type_old=type_old, fq_name_old=fq_name_old, is_child_old=is_child_old, is_active_old=is_active_old, label_list_old=label_list_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, has_unq_name_old=has_unq_name_old, label_regexp_old=label_regexp_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.module.update', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VlanEgress(APIObject):
-	gpk: str
-	vlan_gfk: str
-	is_tagged: bool
-	l_port_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan_egress.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_tagged': is_tagged_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_tagged_old=is_tagged_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bldg(APIObject):
-	gpk: str
-	name: str
-	number: str
-	street: str
-	postal_code: int
-	geo_location: dict
-	site_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.street is not None and not isinstance(self.street, str):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(self.street)}")
-		if self.postal_code is not None and not isinstance(self.postal_code, int):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(self.postal_code)}")
-		if self.geo_location is not None and not isinstance(self.geo_location, dict):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(self.geo_location)}")
-		if not isinstance(self.site_fq_name, str):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(self.site_fq_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		return {'name': 'nd.bldg.create', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(number_old: str) -> dict:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, number_old: str) -> list:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, number_old: str = None, fetch_limit_old: int = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		return {'name': 'nd.bldg.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'number': number_old, 'fetch_limit': fetch_limit_old, 'postal_code': postal_code_old, 'fetch_offset': fetch_offset_old, 'geo_location': geo_location_old, 'site_fq_name': site_fq_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'geo_location_distance': geo_location_distance_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, number_old: str = None, fetch_limit_old: int = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, number_old=number_old, fetch_limit_old=fetch_limit_old, postal_code_old=postal_code_old, fetch_offset_old=fetch_offset_old, geo_location_old=geo_location_old, site_fq_name_old=site_fq_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, geo_location_distance_old=geo_location_distance_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.update', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort(APIObject):
-	gpk: str
-	name: str
-	type: str
-	speed: str
-	is_nnl: bool
-	mdl_bldg: str
-	mdl_room: str
-	mdl_type: str
-	protocol: str
-	type_group: str
-	description: str
-	mdl_fq_name: str
-	name_sortby: str
-	type_sortby: int
-	is_connected: bool
-	is_defective: bool
-	is_edge_node: bool
-	connected_gfk: str
-	connected_name: str
-	connected_mdl_bldg: str
-	connected_mdl_room: str
-	dest_connected_gfk: str
-	connection_id_nodes: list
-	connection_position: int
-	connected_mdl_fq_name: str
-	is_internal_connected: bool
-	internal_connected_gfk: str
-	internal_connected_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.speed, str):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(self.speed)}")
-		if not isinstance(self.is_nnl, bool):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(self.is_nnl)}")
-		if self.mdl_bldg is not None and not isinstance(self.mdl_bldg, str):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(self.mdl_bldg)}")
-		if self.mdl_room is not None and not isinstance(self.mdl_room, str):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(self.mdl_room)}")
-		if not isinstance(self.mdl_type, str):
-			raise ValueError(f"'mdl_type' of incorrect type. Expected str, got {type(self.mdl_type)}")
-		if not isinstance(self.protocol, str):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(self.protocol)}")
-		if not isinstance(self.type_group, str):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(self.type_group)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if not isinstance(self.type_sortby, int):
-			raise ValueError(f"'type_sortby' of incorrect type. Expected int, got {type(self.type_sortby)}")
-		if not isinstance(self.is_connected, bool):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(self.is_connected)}")
-		if not isinstance(self.is_defective, bool):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(self.is_defective)}")
-		if not isinstance(self.is_edge_node, bool):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(self.is_edge_node)}")
-		if not isinstance(self.connected_gfk, str):
-			raise ValueError(f"'connected_gfk' of incorrect type. Expected str, got {type(self.connected_gfk)}")
-		if self.connected_name is not None and not isinstance(self.connected_name, str):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(self.connected_name)}")
-		if self.connected_mdl_bldg is not None and not isinstance(self.connected_mdl_bldg, str):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(self.connected_mdl_bldg)}")
-		if self.connected_mdl_room is not None and not isinstance(self.connected_mdl_room, str):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(self.connected_mdl_room)}")
-		if not isinstance(self.dest_connected_gfk, str):
-			raise ValueError(f"'dest_connected_gfk' of incorrect type. Expected str, got {type(self.dest_connected_gfk)}")
-		if not isinstance(self.connection_id_nodes, list):
-			raise ValueError(f"'connection_id_nodes' of incorrect type. Expected list, got {type(self.connection_id_nodes)}")
-		if not isinstance(self.connection_position, int):
-			raise ValueError(f"'connection_position' of incorrect type. Expected int, got {type(self.connection_position)}")
-		if self.connected_mdl_fq_name is not None and not isinstance(self.connected_mdl_fq_name, str):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(self.connected_mdl_fq_name)}")
-		if not isinstance(self.is_internal_connected, bool):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(self.is_internal_connected)}")
-		if not isinstance(self.internal_connected_gfk, str):
-			raise ValueError(f"'internal_connected_gfk' of incorrect type. Expected str, got {type(self.internal_connected_gfk)}")
-		if self.internal_connected_name is not None and not isinstance(self.internal_connected_name, str):
-			raise ValueError(f"'internal_connected_name' of incorrect type. Expected str, got {type(self.internal_connected_name)}")
-
-	@staticmethod
-	def bulk_connect_ta(mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> dict:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.bulk_connect', 'new': _denullify_dict({'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'name_stop': name_stop_new, 'name_start': name_start_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_ports': include_all_ports_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_connect(cls, api_session: APISession, mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> list:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_connect_ta(mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, name_stop_new=name_stop_new, name_start_new=name_start_new, mdl_fq_name_new=mdl_fq_name_new, include_all_ports_new=include_all_ports_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_disconnect_ta(mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.bulk_disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_ports': include_all_ports_old, 'type_group_is_fix': type_group_is_fix_old, 'include_all_submdls': include_all_submdls_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_disconnect(cls, api_session: APISession, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_disconnect_ta(mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, include_all_ports_old=include_all_ports_old, type_group_is_fix_old=type_group_is_fix_old, include_all_submdls_old=include_all_submdls_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_move_connection_ta(connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> dict:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		return {'name': 'nd.p_port.bulk_move_connection', 'new': _denullify_dict({'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_copy_pp_description': do_copy_pp_description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_move_connection(cls, api_session: APISession, connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> list:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_move_connection_ta(connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_copy_pp_description_old=do_copy_pp_description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def connect_ta(name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.connect', 'new': _denullify_dict({'name': name_new, 'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'mdl_fq_name': mdl_fq_name_new, 'connected_name': connected_name_new, 'patch_cable_name': patch_cable_name_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def connect(cls, api_session: APISession, name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.connect_ta(name_new=name_new, mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, mdl_fq_name_new=mdl_fq_name_new, connected_name_new=connected_name_new, patch_cable_name_new=patch_cable_name_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def disconnect_ta(name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def disconnect(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.disconnect_ta(name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, protocol_old: str = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		return {'name': 'nd.p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'speed': speed_old, 'is_nnl': is_nnl_old, 'protocol': protocol_old, 'type_group': type_group_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'is_connected': is_connected_old, 'is_edge_node': is_edge_node_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_internal_connected': is_internal_connected_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, protocol_old: str = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, speed_old=speed_old, is_nnl_old=is_nnl_old, protocol_old=protocol_old, type_group_old=type_group_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, is_connected_old=is_connected_old, is_edge_node_old=is_edge_node_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_internal_connected_old=is_internal_connected_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		return {'name': 'nd.p_port.update', 'new': _denullify_dict({'description': description_new, 'is_defective': is_defective_new}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, is_defective_new=is_defective_new, name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Site(APIObject):
-	gpk: str
-	name: str
-	type: str
-	fq_name: str
-	has_parent: bool
-	description: str
-	type_is_child: bool
-	parent_fq_name: str
-	type_force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.has_parent, bool):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(self.has_parent)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.type_is_child, bool):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(self.type_is_child)}")
-		if self.parent_fq_name is not None and not isinstance(self.parent_fq_name, str):
-			raise ValueError(f"'parent_fq_name' of incorrect type. Expected str, got {type(self.parent_fq_name)}")
-		if not isinstance(self.type_force_is_child, bool):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(self.type_force_is_child)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.site.create', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, fq_name_old: str = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		return {'name': 'nd.site.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'fq_name': fq_name_old, 'has_parent': has_parent_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'type_is_child': type_is_child_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'type_force_is_child': type_force_is_child_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, fq_name_old: str = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, fq_name_old=fq_name_old, has_parent_old=has_parent_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, type_is_child_old=type_is_child_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, type_force_is_child_old=type_force_is_child_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.update', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module2ap(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	ap_name: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.ap_name, str):
-			raise ValueError(f"'ap_name' of incorrect type. Expected str, got {type(self.ap_name)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, ap_name_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2ap.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'mdl_fq_name': mdl_fq_name_old, 'ap_name_list': ap_name_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, ap_name_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, mdl_fq_name_old=mdl_fq_name_old, ap_name_list_old=ap_name_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd(APIObject):
-	gpk: str
-	name: str
-	categ: str
-	is_own: bool
-	seclvl: int
-	description: str
-	dhcp_domain: str
-	dhcp_enabled: bool
-	admin_description: str
-	dhcp_opt_t1_percent: int
-	dhcp_opt_t2_percent: int
-	dhcp_accept_new_leases: bool
-	dhcp_ttl_value_percent: int
-	dhcp_leasetime_dyn_days: int
-	dhcp_leasetime_dyn_hours: int
-	dhcp_leasetime_dyn_minutes: int
-	dhcp_leasetime_static_days: int
-	dhcp_leasetime_static_hours: int
-	dhcp_offer_rsv_time_minutes: int
-	dhcp_offer_rsv_time_seconds: int
-	dhcp_leasetime_static_minutes: int
-	dhcp_accept_requested_hostname: bool
-	dhcp_dynamic_lease_removal_time: str
-	dhcp_new_leases_get_static_addr: bool
-	dhcp_new_leases_get_static_fqdn: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.categ, str):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(self.categ)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.seclvl, int):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(self.seclvl)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.dhcp_domain is not None and not isinstance(self.dhcp_domain, str):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(self.dhcp_domain)}")
-		if not isinstance(self.dhcp_enabled, bool):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(self.dhcp_enabled)}")
-		if self.admin_description is not None and not isinstance(self.admin_description, str):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(self.admin_description)}")
-		if not isinstance(self.dhcp_opt_t1_percent, int):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t1_percent)}")
-		if not isinstance(self.dhcp_opt_t2_percent, int):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t2_percent)}")
-		if not isinstance(self.dhcp_accept_new_leases, bool):
-			raise ValueError(f"'dhcp_accept_new_leases' of incorrect type. Expected bool, got {type(self.dhcp_accept_new_leases)}")
-		if not isinstance(self.dhcp_ttl_value_percent, int):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(self.dhcp_ttl_value_percent)}")
-		if not isinstance(self.dhcp_leasetime_dyn_days, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_days)}")
-		if not isinstance(self.dhcp_leasetime_dyn_hours, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_hours)}")
-		if not isinstance(self.dhcp_leasetime_dyn_minutes, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_minutes)}")
-		if not isinstance(self.dhcp_leasetime_static_days, int):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_days)}")
-		if not isinstance(self.dhcp_leasetime_static_hours, int):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_hours)}")
-		if not isinstance(self.dhcp_offer_rsv_time_minutes, int):
-			raise ValueError(f"'dhcp_offer_rsv_time_minutes' of incorrect type. Expected int, got {type(self.dhcp_offer_rsv_time_minutes)}")
-		if not isinstance(self.dhcp_offer_rsv_time_seconds, int):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(self.dhcp_offer_rsv_time_seconds)}")
-		if not isinstance(self.dhcp_leasetime_static_minutes, int):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_minutes)}")
-		if self.dhcp_accept_requested_hostname is not None and not isinstance(self.dhcp_accept_requested_hostname, bool):
-			raise ValueError(f"'dhcp_accept_requested_hostname' of incorrect type. Expected bool, got {type(self.dhcp_accept_requested_hostname)}")
-		if not isinstance(self.dhcp_dynamic_lease_removal_time, str):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(self.dhcp_dynamic_lease_removal_time)}")
-		if not isinstance(self.dhcp_new_leases_get_static_addr, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_addr)}")
-		if not isinstance(self.dhcp_new_leases_get_static_fqdn, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_fqdn)}")
-
-	@staticmethod
-	def copy_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'nd.bcd.copy', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def copy(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.copy_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_accept_new_leases_new: bool = False, dhcp_ttl_value_percent_new: int = 60, dhcp_leasetime_dyn_days_new: int = 0, dhcp_leasetime_dyn_hours_new: int = 2, dhcp_leasetime_dyn_minutes_new: int = 0, dhcp_leasetime_static_days_new: int = 0, dhcp_leasetime_static_hours_new: int = 6, dhcp_offer_rsv_time_minutes_new: int = 0, dhcp_offer_rsv_time_seconds_new: int = 15, dhcp_leasetime_static_minutes_new: int = 0, dhcp_accept_requested_hostname_new: bool = False, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_accept_new_leases_new is not None and not (isinstance(dhcp_accept_new_leases_new, bool)):
-			raise ValueError(f"'dhcp_accept_new_leases' of incorrect type. Expected bool, got {type(dhcp_accept_new_leases_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_minutes_new is not None and not (isinstance(dhcp_offer_rsv_time_minutes_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_minutes' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_minutes_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_accept_requested_hostname_new is not None and not (isinstance(dhcp_accept_requested_hostname_new, bool)):
-			raise ValueError(f"'dhcp_accept_requested_hostname' of incorrect type. Expected bool, got {type(dhcp_accept_requested_hostname_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-
-		return {'name': 'nd.bcd.create', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'admin_description': admin_description_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_accept_new_leases': dhcp_accept_new_leases_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_leasetime_dyn_days': dhcp_leasetime_dyn_days_new, 'dhcp_leasetime_dyn_hours': dhcp_leasetime_dyn_hours_new, 'dhcp_leasetime_dyn_minutes': dhcp_leasetime_dyn_minutes_new, 'dhcp_leasetime_static_days': dhcp_leasetime_static_days_new, 'dhcp_leasetime_static_hours': dhcp_leasetime_static_hours_new, 'dhcp_offer_rsv_time_minutes': dhcp_offer_rsv_time_minutes_new, 'dhcp_offer_rsv_time_seconds': dhcp_offer_rsv_time_seconds_new, 'dhcp_leasetime_static_minutes': dhcp_leasetime_static_minutes_new, 'dhcp_accept_requested_hostname': dhcp_accept_requested_hostname_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_accept_new_leases_new: bool = False, dhcp_ttl_value_percent_new: int = 60, dhcp_leasetime_dyn_days_new: int = 0, dhcp_leasetime_dyn_hours_new: int = 2, dhcp_leasetime_dyn_minutes_new: int = 0, dhcp_leasetime_static_days_new: int = 0, dhcp_leasetime_static_hours_new: int = 6, dhcp_offer_rsv_time_minutes_new: int = 0, dhcp_offer_rsv_time_seconds_new: int = 15, dhcp_leasetime_static_minutes_new: int = 0, dhcp_accept_requested_hostname_new: bool = False, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_accept_new_leases_new is not None and not (isinstance(dhcp_accept_new_leases_new, bool)):
-			raise ValueError(f"'dhcp_accept_new_leases' of incorrect type. Expected bool, got {type(dhcp_accept_new_leases_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_minutes_new is not None and not (isinstance(dhcp_offer_rsv_time_minutes_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_minutes' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_minutes_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_accept_requested_hostname_new is not None and not (isinstance(dhcp_accept_requested_hostname_new, bool)):
-			raise ValueError(f"'dhcp_accept_requested_hostname' of incorrect type. Expected bool, got {type(dhcp_accept_requested_hostname_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, admin_description_new=admin_description_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_accept_new_leases_new=dhcp_accept_new_leases_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_leasetime_dyn_days_new=dhcp_leasetime_dyn_days_new, dhcp_leasetime_dyn_hours_new=dhcp_leasetime_dyn_hours_new, dhcp_leasetime_dyn_minutes_new=dhcp_leasetime_dyn_minutes_new, dhcp_leasetime_static_days_new=dhcp_leasetime_static_days_new, dhcp_leasetime_static_hours_new=dhcp_leasetime_static_hours_new, dhcp_offer_rsv_time_minutes_new=dhcp_offer_rsv_time_minutes_new, dhcp_offer_rsv_time_seconds_new=dhcp_offer_rsv_time_seconds_new, dhcp_leasetime_static_minutes_new=dhcp_leasetime_static_minutes_new, dhcp_accept_requested_hostname_new=dhcp_accept_requested_hostname_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, is_own_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-
-		return {'name': 'nd.bcd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'is_own': is_own_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'dhcp_enabled': dhcp_enabled_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_old, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, is_own_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, is_own_old=is_own_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, dhcp_enabled_old=dhcp_enabled_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, dhcp_new_leases_get_static_addr_old=dhcp_new_leases_get_static_addr_old, dhcp_new_leases_get_static_fqdn_old=dhcp_new_leases_get_static_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_accept_new_leases_new: bool = None, dhcp_ttl_value_percent_new: int = None, dhcp_leasetime_dyn_days_new: int = None, dhcp_leasetime_dyn_hours_new: int = None, dhcp_leasetime_dyn_minutes_new: int = None, dhcp_leasetime_static_days_new: int = None, dhcp_leasetime_static_hours_new: int = None, dhcp_offer_rsv_time_minutes_new: int = None, dhcp_offer_rsv_time_seconds_new: int = None, dhcp_leasetime_static_minutes_new: int = None, dhcp_accept_requested_hostname_new: bool = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_accept_new_leases_new is not None and not (isinstance(dhcp_accept_new_leases_new, bool)):
-			raise ValueError(f"'dhcp_accept_new_leases' of incorrect type. Expected bool, got {type(dhcp_accept_new_leases_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_minutes_new is not None and not (isinstance(dhcp_offer_rsv_time_minutes_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_minutes' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_minutes_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_accept_requested_hostname_new is not None and not (isinstance(dhcp_accept_requested_hostname_new, bool)):
-			raise ValueError(f"'dhcp_accept_requested_hostname' of incorrect type. Expected bool, got {type(dhcp_accept_requested_hostname_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.update', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'admin_description': admin_description_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_accept_new_leases': dhcp_accept_new_leases_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_leasetime_dyn_days': dhcp_leasetime_dyn_days_new, 'dhcp_leasetime_dyn_hours': dhcp_leasetime_dyn_hours_new, 'dhcp_leasetime_dyn_minutes': dhcp_leasetime_dyn_minutes_new, 'dhcp_leasetime_static_days': dhcp_leasetime_static_days_new, 'dhcp_leasetime_static_hours': dhcp_leasetime_static_hours_new, 'dhcp_offer_rsv_time_minutes': dhcp_offer_rsv_time_minutes_new, 'dhcp_offer_rsv_time_seconds': dhcp_offer_rsv_time_seconds_new, 'dhcp_leasetime_static_minutes': dhcp_leasetime_static_minutes_new, 'dhcp_accept_requested_hostname': dhcp_accept_requested_hostname_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_accept_new_leases_new: bool = None, dhcp_ttl_value_percent_new: int = None, dhcp_leasetime_dyn_days_new: int = None, dhcp_leasetime_dyn_hours_new: int = None, dhcp_leasetime_dyn_minutes_new: int = None, dhcp_leasetime_static_days_new: int = None, dhcp_leasetime_static_hours_new: int = None, dhcp_offer_rsv_time_minutes_new: int = None, dhcp_offer_rsv_time_seconds_new: int = None, dhcp_leasetime_static_minutes_new: int = None, dhcp_accept_requested_hostname_new: bool = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_accept_new_leases_new is not None and not (isinstance(dhcp_accept_new_leases_new, bool)):
-			raise ValueError(f"'dhcp_accept_new_leases' of incorrect type. Expected bool, got {type(dhcp_accept_new_leases_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_minutes_new is not None and not (isinstance(dhcp_offer_rsv_time_minutes_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_minutes' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_minutes_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_accept_requested_hostname_new is not None and not (isinstance(dhcp_accept_requested_hostname_new, bool)):
-			raise ValueError(f"'dhcp_accept_requested_hostname' of incorrect type. Expected bool, got {type(dhcp_accept_requested_hostname_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, admin_description_new=admin_description_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_accept_new_leases_new=dhcp_accept_new_leases_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_leasetime_dyn_days_new=dhcp_leasetime_dyn_days_new, dhcp_leasetime_dyn_hours_new=dhcp_leasetime_dyn_hours_new, dhcp_leasetime_dyn_minutes_new=dhcp_leasetime_dyn_minutes_new, dhcp_leasetime_static_days_new=dhcp_leasetime_static_days_new, dhcp_leasetime_static_hours_new=dhcp_leasetime_static_hours_new, dhcp_offer_rsv_time_minutes_new=dhcp_offer_rsv_time_minutes_new, dhcp_offer_rsv_time_seconds_new=dhcp_offer_rsv_time_seconds_new, dhcp_leasetime_static_minutes_new=dhcp_leasetime_static_minutes_new, dhcp_accept_requested_hostname_new=dhcp_accept_requested_hostname_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Device(APIObject):
-	nc: str
-	acg: str
-	gpk: str
-	fqdn: str
-	type: str
-	is_valid: bool
-	sysdescr: str
-	uses_vlans: bool
-	description: str
-	assigned_parser: str
-	executable_parser: str
-
-	def __post_init__(self):
-		if not isinstance(self.nc, str):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(self.nc)}")
-		if not isinstance(self.acg, str):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(self.acg)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_valid, bool):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(self.is_valid)}")
-		if self.sysdescr is not None and not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.uses_vlans, bool):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(self.uses_vlans)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.assigned_parser, str):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(self.assigned_parser)}")
-		if not isinstance(self.executable_parser, str):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(self.executable_parser)}")
-
-	@staticmethod
-	def create_ta(nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.create', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.imp', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'sysdescr': sysdescr_new, 'do_import': do_import_new, 'description': description_new, 'import_data': import_data_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, sysdescr_new=sysdescr_new, do_import_new=do_import_new, description_new=description_new, import_data_new=import_data_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(nc_old: str = None, acg_old: str = None, gpk_old: str = None, fqdn_old: str = None, type_old: str = None, is_valid_old: bool = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'nc': nc_old, 'acg': acg_old, 'gpk': gpk_old, 'fqdn': fqdn_old, 'type': type_old, 'is_valid': is_valid_old, 'uses_vlans': uses_vlans_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'assigned_parser': assigned_parser_old, 'executable_parser': executable_parser_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, nc_old: str = None, acg_old: str = None, gpk_old: str = None, fqdn_old: str = None, type_old: str = None, is_valid_old: bool = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(nc_old=nc_old, acg_old=acg_old, gpk_old=gpk_old, fqdn_old=fqdn_old, type_old=type_old, is_valid_old=is_valid_old, uses_vlans_old=uses_vlans_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, assigned_parser_old=assigned_parser_old, executable_parser_old=executable_parser_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.update', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpIntf(APIObject):
-	gpk: str
-	l_port: str
-	ip_addr: str
-	is_vrrp: bool
-	dev_fqdn: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port, str):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(self.l_port)}")
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, l_port_old: str = None, ip_addr_old: str = None, is_vrrp_old: bool = None, dev_fqdn_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_secondary_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if l_port_old is not None and not (isinstance(l_port_old, str)):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(l_port_old)}")
-		if ip_addr_old is not None and not (isinstance(ip_addr_old, str)):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(ip_addr_old)}")
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_intf.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'l_port': l_port_old, 'ip_addr': ip_addr_old, 'is_vrrp': is_vrrp_old, 'dev_fqdn': dev_fqdn_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_secondary': is_secondary_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, l_port_old: str = None, ip_addr_old: str = None, is_vrrp_old: bool = None, dev_fqdn_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_secondary_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if l_port_old is not None and not (isinstance(l_port_old, str)):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(l_port_old)}")
-		if ip_addr_old is not None and not (isinstance(ip_addr_old, str)):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(ip_addr_old)}")
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, l_port_old=l_port_old, ip_addr_old=ip_addr_old, is_vrrp_old=is_vrrp_old, dev_fqdn_old=dev_fqdn_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_secondary_old=is_secondary_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpRoute(APIObject):
-	gpk: str
-	cidr: str
-	is_own: bool
-	metric: int
-	dev_fqdn: str
-	dest_l_port: str
-	dest_ip_addr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if self.dest_l_port is not None and not isinstance(self.dest_l_port, str):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(self.dest_l_port)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_route.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'cidr': cidr_old, 'is_own': is_own_old, 'dev_fqdn': dev_fqdn_old, 'dest_l_port': dest_l_port_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dest_ip_addr_cidr': dest_ip_addr_cidr_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, cidr_old=cidr_old, is_own_old=is_own_old, dev_fqdn_old=dev_fqdn_old, dest_l_port_old=dest_l_port_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dest_ip_addr_cidr_old=dest_ip_addr_cidr_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPort(APIObject):
-	gpk: str
-	lag: int
-	name: str
-	level: int
-	dev_fqdn: str
-	priority: int
-	tag_list: list
-	adm_state: int
-	description: str
-	name_sortby: str
-	ingress_vlan_gfk: str
-	adm_state_description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if not isinstance(self.adm_state, int):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(self.adm_state)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if self.ingress_vlan_gfk is not None and not isinstance(self.ingress_vlan_gfk, str):
-			raise ValueError(f"'ingress_vlan_gfk' of incorrect type. Expected str, got {type(self.ingress_vlan_gfk)}")
-		if not isinstance(self.adm_state_description, str):
-			raise ValueError(f"'adm_state_description' of incorrect type. Expected str, got {type(self.adm_state_description)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, level_old: int = None, dev_fqdn_old: str = None, tag_list_old: list = None, adm_state_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'level': level_old, 'dev_fqdn': dev_fqdn_old, 'tag_list': tag_list_old, 'adm_state': adm_state_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'has_ingress_vlan': has_ingress_vlan_old, 'tag_list_operator': tag_list_operator_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, level_old: int = None, dev_fqdn_old: str = None, tag_list_old: list = None, adm_state_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, level_old=level_old, dev_fqdn_old=dev_fqdn_old, tag_list_old=tag_list_old, adm_state_old=adm_state_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, has_ingress_vlan_old=has_ingress_vlan_old, tag_list_operator_old=tag_list_operator_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan(APIObject):
-	id: int
-	bcd: str
-	gpk: str
-	name: str
-	net_instnc: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vlan.create', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(id_old: int = None, bcd_old: str = None, gpk_old: str = None, name_old: str = None, id_list_old: list = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if id_old is not None and not (isinstance(id_old, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_old)}")
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'id': id_old, 'bcd': bcd_old, 'gpk': gpk_old, 'name': name_old, 'id_list': id_list_old, 'net_instnc': net_instnc_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, id_old: int = None, bcd_old: str = None, gpk_old: str = None, name_old: str = None, id_list_old: list = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if id_old is not None and not (isinstance(id_old, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_old)}")
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(id_old=id_old, bcd_old=bcd_old, gpk_old=gpk_old, name_old=name_old, id_list_old=id_list_old, net_instnc_old=net_instnc_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.update', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class L2pPort(APIObject):
-	gpk: str
-	l_port_gfk: str
-	p_port_gfk: str
-	port_order: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-		if not isinstance(self.p_port_gfk, str):
-			raise ValueError(f"'p_port_gfk' of incorrect type. Expected str, got {type(self.p_port_gfk)}")
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l2p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceAttributeImp(APIObject):
-	value: str
-	key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-
-@dataclass()
-class IpIntfImp(APIObject):
-	ip_addr: str
-	is_vrrp: bool
-	vrrp_id: int
-	l_port_name: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if self.vrrp_id is not None and not isinstance(self.vrrp_id, int):
-			raise ValueError(f"'vrrp_id' of incorrect type. Expected int, got {type(self.vrrp_id)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-@dataclass()
-class IpRouteImp(APIObject):
-	net: str
-	metric: int
-	is_routable: bool
-	dest_ip_addr: str
-	dest_l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.net, str):
-			raise ValueError(f"'net' of incorrect type. Expected str, got {type(self.net)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-		if self.dest_l_port_name is not None and not isinstance(self.dest_l_port_name, str):
-			raise ValueError(f"'dest_l_port_name' of incorrect type. Expected str, got {type(self.dest_l_port_name)}")
-
-@dataclass()
-class L2pPortImp(APIObject):
-	port_order: int
-	l_port_name: str
-	p_port_name: str
-	fq_module_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.p_port_name, str):
-			raise ValueError(f"'p_port_name' of incorrect type. Expected str, got {type(self.p_port_name)}")
-		if self.fq_module_name is not None and not isinstance(self.fq_module_name, str):
-			raise ValueError(f"'fq_module_name' of incorrect type. Expected str, got {type(self.fq_module_name)}")
-
-@dataclass()
-class LPortImp(APIObject):
-	lag: int
-	name: str
-	prio: int
-	status: int
-	tag_list: list
-	port_level: int
-	description: str
-	vlan_id_ingress: int
-
-	def __post_init__(self):
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.prio is not None and not isinstance(self.prio, int):
-			raise ValueError(f"'prio' of incorrect type. Expected int, got {type(self.prio)}")
-		if self.status is not None and not isinstance(self.status, int):
-			raise ValueError(f"'status' of incorrect type. Expected int, got {type(self.status)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if self.port_level is not None and not isinstance(self.port_level, int):
-			raise ValueError(f"'port_level' of incorrect type. Expected int, got {type(self.port_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.vlan_id_ingress is not None and not isinstance(self.vlan_id_ingress, int):
-			raise ValueError(f"'vlan_id_ingress' of incorrect type. Expected int, got {type(self.vlan_id_ingress)}")
-
-@dataclass()
-class VlanEgressImp(APIObject):
-	id: int
-	is_tagged: bool
-	l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-
-@dataclass()
-class VlanImp(APIObject):
-	id: int
-	name: str
-	vxlan_vni: int
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if self.name is not None and not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.vxlan_vni is not None and not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-		if self.net_instnc is not None and not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-@dataclass()
-class Module2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		return {'name': 'nd.module2device.create', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_submdls': include_all_submdls_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> list:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, include_all_submdls_new=include_all_submdls_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, dev_fqdn_old: str = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'dev_fqdn': dev_fqdn_old, 'fetch_limit': fetch_limit_old, 'mdl_fq_name': mdl_fq_name_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, dev_fqdn_old: str = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, dev_fqdn_old=dev_fqdn_old, fetch_limit_old=fetch_limit_old, mdl_fq_name_old=mdl_fq_name_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> dict:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.update', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> list:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTa(APIObject):
-	gpk: str
-	owner: str
-	is_own: bool
-	position: int
-	is_active: bool
-	is_working: bool
-	parent_gfk: str
-	mail_on_error: bool
-	last_devimp_ts: str
-	last_devimp_msg: str
-	mail_on_success: bool
-	preserve_on_error: bool
-	last_devimp_success: bool
-	preserve_on_success: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.owner, str):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(self.owner)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_working, bool):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(self.is_working)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.mail_on_error, bool):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(self.mail_on_error)}")
-		if self.last_devimp_ts is not None and not isinstance(self.last_devimp_ts, str):
-			raise ValueError(f"'last_devimp_ts' of incorrect type. Expected str, got {type(self.last_devimp_ts)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if not isinstance(self.mail_on_success, bool):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(self.mail_on_success)}")
-		if not isinstance(self.preserve_on_error, bool):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(self.preserve_on_error)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.preserve_on_success, bool):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(self.preserve_on_success)}")
-
-	@staticmethod
-	def bulk_delete_ta(is_active_old: bool) -> dict:
-		if not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-
-		return {'name': 'nd.diq_ta.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, is_active_old: bool) -> list:
-		if not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(is_active_old=is_active_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		return {'name': 'nd.diq_ta.create', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, owner_old: str = None, is_own_old: bool = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'owner': owner_old, 'is_own': is_own_old, 'position': position_old, 'is_active': is_active_old, 'is_working': is_working_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, owner_old: str = None, is_own_old: bool = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, owner_old=owner_old, is_own_old=is_own_old, position_old=position_old, is_active_old=is_active_old, is_working_old=is_working_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.update', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTaEntry(APIObject):
-	gpk: str
-	dev_nc: str
-	dev_acg: str
-	do_save: bool
-	dev_fqdn: str
-	dev_type: str
-	do_parse: bool
-	do_import: bool
-	dev_parser: str
-	diq_ta_gfk: str
-	diq_ta_is_own: bool
-	dev_description: str
-	last_devimp_msg: str
-	upload_filename: str
-	output_verbosity: bool
-	dev_attributes_dict: dict
-	last_devimp_success: bool
-	rplc_charset_errors: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_nc, str):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(self.dev_nc)}")
-		if not isinstance(self.dev_acg, str):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(self.dev_acg)}")
-		if not isinstance(self.do_save, bool):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(self.do_save)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.dev_type, str):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(self.dev_type)}")
-		if not isinstance(self.do_parse, bool):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(self.do_parse)}")
-		if not isinstance(self.do_import, bool):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(self.do_import)}")
-		if not isinstance(self.dev_parser, str):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(self.dev_parser)}")
-		if not isinstance(self.diq_ta_gfk, str):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(self.diq_ta_gfk)}")
-		if not isinstance(self.diq_ta_is_own, bool):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(self.diq_ta_is_own)}")
-		if self.dev_description is not None and not isinstance(self.dev_description, str):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(self.dev_description)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if self.upload_filename is not None and not isinstance(self.upload_filename, str):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(self.upload_filename)}")
-		if not isinstance(self.output_verbosity, bool):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(self.output_verbosity)}")
-		if not isinstance(self.dev_attributes_dict, dict):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(self.dev_attributes_dict)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.rplc_charset_errors, bool):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(self.rplc_charset_errors)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		return {'name': 'nd.diq_ta_entry.create', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, diq_ta_gfk_old: str) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, dev_fqdn_old: str = None, diq_ta_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, diq_ta_is_own_old: bool = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if diq_ta_gfk_old is not None and not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta_entry.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'diq_ta_is_own': diq_ta_is_own_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, dev_fqdn_old: str = None, diq_ta_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, diq_ta_is_own_old: bool = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if diq_ta_gfk_old is not None and not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, diq_ta_is_own_old=diq_ta_is_own_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.update', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vlan_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan(APIObject):
-	bcd: str
-	gpk: str
-	vni: int
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vxlan.create', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(vni_old: int) -> dict:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, vni_old: int) -> list:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, vni_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if vni_old is not None and not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'vni': vni_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, vni_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if vni_old is not None and not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, vni_old=vni_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.update', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vxlan_vni: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2group(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def bulk_update_ta(bcd_name_list_new: list = None, group_name_list_new: list = None, bcd_name_old: str = None, group_name_old: str = None, bcd_name_list_old: list = None, group_name_list_old: list = None) -> dict:
-		if bcd_name_list_new is not None and not (isinstance(bcd_name_list_new, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		return {'name': 'nd.bcd2group.bulk_update', 'new': _denullify_dict({'bcd_name_list': bcd_name_list_new, 'group_name_list': group_name_list_new}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'group_name': group_name_old, 'bcd_name_list': bcd_name_list_old, 'group_name_list': group_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, bcd_name_list_new: list = None, group_name_list_new: list = None, bcd_name_old: str = None, group_name_old: str = None, bcd_name_list_old: list = None, group_name_list_old: list = None) -> list:
-		if bcd_name_list_new is not None and not (isinstance(bcd_name_list_new, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(bcd_name_list_new=bcd_name_list_new, group_name_list_new=group_name_list_new, bcd_name_old=bcd_name_old, group_name_old=group_name_old, bcd_name_list_old=bcd_name_list_old, group_name_list_old=group_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, group_name_new: str) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'nd.bcd2group.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, group_name_new: str) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, group_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'nd.bcd2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, group_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'bcd_name_list': bcd_name_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, bcd_name_list_old=bcd_name_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2ou(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'nd.bcd2ou.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'bcd_name': bcd_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'ou_short_name': ou_short_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, bcd_name_old=bcd_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, ou_short_name_old=ou_short_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VxlanImp(APIObject):
-	vni: int
-
-	def __post_init__(self):
-		if self.vni is not None and not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
diff --git a/4.0/golang/ndcfg.py b/4.0/golang/ndcfg.py
deleted file mode 100644
index 4ce7298..0000000
--- a/4.0/golang/ndcfg.py
+++ /dev/null
@@ -1,3515 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Module2slotType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	required_slot_width: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.required_slot_width, int):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(self.required_slot_width)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		return {'name': 'ndcfg.module2slot_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'slot_type': slot_type_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, slot_type_old=slot_type_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleTypeClass(APIObject):
-	gpk: str
-	name: str
-	description: str
-	is_global_readable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_global_readable, bool):
-			raise ValueError(f"'is_global_readable' of incorrect type. Expected bool, got {type(self.is_global_readable)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_global_readable_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_global_readable_new is not None and not (isinstance(is_global_readable_new, bool)):
-			raise ValueError(f"'is_global_readable' of incorrect type. Expected bool, got {type(is_global_readable_new)}")
-
-		return {'name': 'ndcfg.module_type_class.create', 'new': _denullify_dict({'name': name_new, 'is_global_readable': is_global_readable_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_global_readable_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_global_readable_new is not None and not (isinstance(is_global_readable_new, bool)):
-			raise ValueError(f"'is_global_readable' of incorrect type. Expected bool, got {type(is_global_readable_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_global_readable_new=is_global_readable_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_global_readable_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_global_readable_new is not None and not (isinstance(is_global_readable_new, bool)):
-			raise ValueError(f"'is_global_readable' of incorrect type. Expected bool, got {type(is_global_readable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.update', 'new': _denullify_dict({'name': name_new, 'is_global_readable': is_global_readable_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_global_readable_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_global_readable_new is not None and not (isinstance(is_global_readable_new, bool)):
-			raise ValueError(f"'is_global_readable' of incorrect type. Expected bool, got {type(is_global_readable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_global_readable_new=is_global_readable_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortProto(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_proto.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort2moduleType(APIObject):
-	gpk: str
-	int_gfk: str
-	port_type: str
-	port_count: int
-	port_name1: str
-	port_proto: str
-	port_speed: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	port_inc_count: int
-	port_type_group: str
-	port_type_order: int
-	port_name_prefix: str
-	port_name_suffix: str
-	port_name_varprfx: str
-	port_name_varprfx_join_dl: str
-	port_name_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.int_gfk, str):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(self.int_gfk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_count, int):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(self.port_count)}")
-		if self.port_name1 is not None and not isinstance(self.port_name1, str):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(self.port_name1)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.port_inc_count, int):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(self.port_inc_count)}")
-		if not isinstance(self.port_type_group, str):
-			raise ValueError(f"'port_type_group' of incorrect type. Expected str, got {type(self.port_type_group)}")
-		if not isinstance(self.port_type_order, int):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(self.port_type_order)}")
-		if self.port_name_prefix is not None and not isinstance(self.port_name_prefix, str):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(self.port_name_prefix)}")
-		if self.port_name_suffix is not None and not isinstance(self.port_name_suffix, str):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(self.port_name_suffix)}")
-		if self.port_name_varprfx is not None and not isinstance(self.port_name_varprfx, str):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(self.port_name_varprfx)}")
-		if self.port_name_varprfx_join_dl is not None and not isinstance(self.port_name_varprfx_join_dl, str):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_join_dl)}")
-		if self.port_name_varprfx_split_dl is not None and not isinstance(self.port_name_varprfx_split_dl, str):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.p_port2module_type.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.update', 'new': _denullify_dict({'int_gfk': int_gfk_new, 'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(int_gfk_new=int_gfk_new, port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	subslot_count: int
-	subslot_name1: str
-	num_mode_level: int
-	subslot_prefix: str
-	subslot_inc_count: int
-	subslot_type_order: int
-	backplane_port_descr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.subslot_count, int):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(self.subslot_count)}")
-		if self.subslot_name1 is not None and not isinstance(self.subslot_name1, str):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(self.subslot_name1)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if self.subslot_prefix is not None and not isinstance(self.subslot_prefix, str):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(self.subslot_prefix)}")
-		if not isinstance(self.subslot_inc_count, int):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(self.subslot_inc_count)}")
-		if not isinstance(self.subslot_type_order, int):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(self.subslot_type_order)}")
-		if self.backplane_port_descr is not None and not isinstance(self.backplane_port_descr, str):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(self.backplane_port_descr)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		return {'name': 'ndcfg.slot2module_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'slot_type': slot_type_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, slot_type_old=slot_type_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortType(APIObject):
-	gpk: str
-	name: str
-	is_internal: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_internal_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		return {'name': 'ndcfg.p_port_type.create', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_internal_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_internal_new=is_internal_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_internal_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.update', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_internal_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_internal_new=is_internal_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	slot_width: int
-	submt_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.slot_width, int):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(self.slot_width)}")
-		if not isinstance(self.submt_count, int):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(self.submt_count)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str, slot_width_new: int = 1) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		return {'name': 'ndcfg.slot_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str, slot_width_new: int = 1) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, cls_old: str = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'cls': cls_old, 'slot_width': slot_width_old, 'fetch_limit': fetch_limit_old, 'submt_count': submt_count_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, cls_old: str = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, cls_old=cls_old, slot_width_old=slot_width_old, fetch_limit_old=fetch_limit_old, submt_count_old=submt_count_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeGroup(APIObject):
-	gpk: str
-	name: str
-	is_permanent: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_permanent, bool):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(self.is_permanent)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_permanent_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		return {'name': 'ndcfg.p_port_type_group.create', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_permanent_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_permanent_new=is_permanent_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_permanent': is_permanent_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_permanent_old=is_permanent_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_permanent_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.update', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_permanent_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_permanent_new=is_permanent_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetInstnc(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_instnc.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeData(APIObject):
-	gpk: str
-	port_type: str
-	port_group: str
-	port_proto: str
-	port_speed: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_group, str):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(self.port_group)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		return {'name': 'ndcfg.p_port_type_data.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(port_type_old: str, port_proto_old: str, port_speed_old: str) -> dict:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str) -> list:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> dict:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.update', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> list:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	is_child: bool
-	is_active: bool
-	is_parent: bool
-	has_unq_name: bool
-	is_forwarding: bool
-	is_loc_depdnt: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_forwarding, bool):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(self.is_forwarding)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		return {'name': 'ndcfg.module_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, cls_old: str = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'cls': cls_old, 'is_child': is_child_old, 'is_active': is_active_old, 'is_parent': is_parent_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'has_unq_name': has_unq_name_old, 'is_forwarding': is_forwarding_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, cls_old: str = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, cls_old=cls_old, is_child_old=is_child_old, is_active_old=is_active_old, is_parent_old=is_parent_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, has_unq_name_old=has_unq_name_old, is_forwarding_old=is_forwarding_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceType(APIObject):
-	gpk: str
-	name: str
-	description: str
-	nw_fwd_level: int
-	nw_fwd_level_description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.nw_fwd_level, int):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(self.nw_fwd_level)}")
-		if not isinstance(self.nw_fwd_level_description, str):
-			raise ValueError(f"'nw_fwd_level_description' of incorrect type. Expected str, got {type(self.nw_fwd_level_description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str, nw_fwd_level_new: int) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str, nw_fwd_level_new: int) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.device_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.device_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'nw_fwd_level': nw_fwd_level_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, nw_fwd_level_old=nw_fwd_level_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser(APIObject):
-	gpk: str
-	name: str
-	exec_args: dict
-	description: str
-	access_group: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.exec_args, dict):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(self.exec_args)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.access_group, str):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(self.access_group)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		return {'name': 'ndcfg.parser.create', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'access_group': access_group_old, 'fetch_offset': fetch_offset_old, 'is_executable': is_executable_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, access_group_old=access_group_old, fetch_offset_old=fetch_offset_old, is_executable_old=is_executable_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.update', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NumMode(APIObject):
-	gpk: str
-	name: str
-	level: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.num_mode.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortSpeed(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_speed.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdCateg(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.bcd_categ.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdSeclvl(APIObject):
-	gpk: str
-	value: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, int):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(self.value)}")
-
-	@staticmethod
-	def create_ta(value_new: int) -> dict:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.create', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: int) -> list:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: int) -> dict:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: int) -> list:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, value_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if value_old is not None and not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'value': value_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, value_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if value_old is not None and not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, value_old=value_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: int, value_new: int = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: int, value_new: int = None) -> list:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd2instnc(APIObject):
-	gpk: str
-	net_cmpnd: str
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.net_cmpnd, str):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(self.net_cmpnd)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-	@staticmethod
-	def create_ta(net_cmpnd_new: str, net_instnc_new: str) -> dict:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.create', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, net_cmpnd_new: str, net_instnc_new: str) -> list:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(net_cmpnd_old: str, net_instnc_old: str) -> dict:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str) -> list:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, net_cmpnd_old: str = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if net_cmpnd_old is not None and not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, net_cmpnd_old: str = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if net_cmpnd_old is not None and not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> dict:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.update', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> list:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser2sysdescr(APIObject):
-	gpk: str
-	parser: str
-	sysdescr: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.parser, str):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(self.parser)}")
-		if not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(parser_new: str, sysdescr_new: str) -> dict:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.create', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, parser_new: str, sysdescr_new: str) -> list:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(sysdescr_old: str) -> dict:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, sysdescr_old: str) -> list:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, parser_old: str = None, sysdescr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if sysdescr_old is not None and not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'parser': parser_old, 'sysdescr': sysdescr_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, parser_old: str = None, sysdescr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if sysdescr_old is not None and not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, parser_old=parser_old, sysdescr_old=sysdescr_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> dict:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.update', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> list:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotTypeClass(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.slot_type_class.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleTypeTree(APIObject):
-	gpk: str
-	slot_type: str
-	parent_gfk: str
-	tree_level: int
-	module_type: str
-	root_node_set: list
-	slot_varname1: str
-	subport_prefix: str
-	subport_varprfx: str
-	subport_varname1: str
-	subport_varprfx_join_dl: str
-	subport_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.root_node_set, list):
-			raise ValueError(f"'root_node_set' of incorrect type. Expected list, got {type(self.root_node_set)}")
-		if self.slot_varname1 is not None and not isinstance(self.slot_varname1, str):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(self.slot_varname1)}")
-		if self.subport_prefix is not None and not isinstance(self.subport_prefix, str):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(self.subport_prefix)}")
-		if self.subport_varprfx is not None and not isinstance(self.subport_varprfx, str):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(self.subport_varprfx)}")
-		if self.subport_varname1 is not None and not isinstance(self.subport_varname1, str):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(self.subport_varname1)}")
-		if self.subport_varprfx_join_dl is not None and not isinstance(self.subport_varprfx_join_dl, str):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_join_dl)}")
-		if self.subport_varprfx_split_dl is not None and not isinstance(self.subport_varprfx_split_dl, str):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, slot_type_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'slot_type': slot_type_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, slot_type_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, slot_type_old=slot_type_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType(APIObject):
-	gpk: str
-	is_child: bool
-	is_parent: bool
-	short_name: str
-	force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.force_is_child, bool):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(self.force_is_child)}")
-
-	@staticmethod
-	def create_ta(is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> dict:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		return {'name': 'ndcfg.site_type.create', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> list:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_child_old: bool = None, is_parent_old: bool = None, short_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.site_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_child': is_child_old, 'is_parent': is_parent_old, 'short_name': short_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'force_is_child': force_is_child_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_child_old: bool = None, is_parent_old: bool = None, short_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_child_old=is_child_old, is_parent_old=is_parent_old, short_name_old=short_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, force_is_child_old=force_is_child_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> dict:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.update', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> list:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType2type(APIObject):
-	gpk: str
-	child_short_name: str
-	parent_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.child_short_name, str):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(self.child_short_name)}")
-		if not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-
-	@staticmethod
-	def create_ta(child_short_name_new: str, parent_short_name_new: str) -> dict:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'ndcfg.site_type2type.create', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, child_short_name_new: str, parent_short_name_new: str) -> list:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(child_short_name_old: str, parent_short_name_old: str) -> dict:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str) -> list:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, child_short_name_old: str = None, parent_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if child_short_name_old is not None and not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if parent_short_name_old is not None and not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.site_type2type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, child_short_name_old: str = None, parent_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if child_short_name_old is not None and not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if parent_short_name_old is not None and not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> dict:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.update', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> list:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPortTag(APIObject):
-	gpk: str
-	value: str
-	level_list: list
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.level_list, list):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(self.level_list)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.l_port_tag.create', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.update', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/nm.py b/4.0/golang/nm.py
deleted file mode 100644
index 767618b..0000000
--- a/4.0/golang/nm.py
+++ /dev/null
@@ -1,58 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class AccessGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nm.access_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/org.py b/4.0/golang/org.py
deleted file mode 100644
index 3144fa0..0000000
--- a/4.0/golang/org.py
+++ /dev/null
@@ -1,331 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class UnitType(APIObject):
-	gpk: str
-	name: str
-	position: int
-	short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, short_name_new: str, position_new: int = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'org.unit_type.create', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, short_name_new: str, position_new: int = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.update', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Unit(APIObject):
-	gpk: str
-	name: str
-	type: str
-	short_name: str
-	tree_level: int
-	sub_position: int
-	root_node_set: list
-	is_mgr_assignable: bool
-	parent_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.sub_position, int):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(self.sub_position)}")
-		if not isinstance(self.root_node_set, list):
-			raise ValueError(f"'root_node_set' of incorrect type. Expected list, got {type(self.root_node_set)}")
-		if not isinstance(self.is_mgr_assignable, bool):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(self.is_mgr_assignable)}")
-		if self.parent_short_name is not None and not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'org.unit.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str, merge_short_name_new: str = None) -> dict:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.delete', 'new': _denullify_dict({'merge_short_name': merge_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str, merge_short_name_new: str = None) -> list:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(merge_short_name_new=merge_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, short_name_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str) or isinstance(short_name_old, ExplicitNull)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'short_name': short_name_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'is_mgr_assignable': is_mgr_assignable_old, 'short_name_regexp': short_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, short_name_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str) or isinstance(short_name_old, ExplicitNull)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, short_name_old=short_name_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, is_mgr_assignable_old=is_mgr_assignable_old, short_name_regexp_old=short_name_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/structs.go b/4.0/golang/structs.go
new file mode 100644
index 0000000..a7c864c
--- /dev/null
+++ b/4.0/golang/structs.go
@@ -0,0 +1,1351 @@
+import "net"
+
+type NdcfgModule2slotType struct {
+	Gpk               string `mapstructure:"gpk"`
+	SlotType          string `mapstructure:"slot_type"`
+	ModuleType        string `mapstructure:"module_type"`
+	NumModeName       string `mapstructure:"num_mode_name"`
+	NumModeLevel      int64  `mapstructure:"num_mode_level"`
+	RequiredSlotWidth int64  `mapstructure:"required_slot_width"`
+}
+
+type NdcfgModuleTypeClass struct {
+	Gpk              string `mapstructure:"gpk"`
+	Name             string `mapstructure:"name"`
+	Description      string `mapstructure:"description"`
+	IsGlobalReadable bool   `mapstructure:"is_global_readable"`
+}
+
+type DnsZone struct {
+	Gpk                      string  `mapstructure:"gpk"`
+	Fqdn                     string  `mapstructure:"fqdn"`
+	IsOwn                    bool    `mapstructure:"is_own"`
+	IsApex                   bool    `mapstructure:"is_apex"`
+	Nsec3Salt                *string `mapstructure:"nsec3_salt"`
+	Description              *string `mapstructure:"description"`
+	NsSetName                *string `mapstructure:"ns_set_name"`
+	Nsec3Itcount             int64   `mapstructure:"nsec3_itcount"`
+	DnssecDoSign             bool    `mapstructure:"dnssec_do_sign"`
+	SoaDataRetry             *uint32 `mapstructure:"soa_data_retry"`
+	Nsec3HashAlgo            int64   `mapstructure:"nsec3_hash_algo"`
+	SoaDataExpire            *uint32 `mapstructure:"soa_data_expire"`
+	SoaDataSerial            uint32  `mapstructure:"soa_data_serial"`
+	SoaDataMinimum           *uint32 `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh           *uint32 `mapstructure:"soa_data_refresh"`
+	DnssecDoEnforce          bool    `mapstructure:"dnssec_do_enforce"`
+	DfltTtlRrtDbext          uint32  `mapstructure:"dflt_ttl_rrt_dbext"`
+	DfltTtlRrtDbint          uint32  `mapstructure:"dflt_ttl_rrt_dbint"`
+	SoaDataHostmaster        *string `mapstructure:"soa_data_hostmaster"`
+	DnssecKskRrsArePublished bool    `mapstructure:"dnssec_ksk_rrs_are_published"`
+}
+
+type NdcfgPPortProto struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlSystem struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr struct {
+	Gpk                   string  `mapstructure:"gpk"`
+	Email                 *string `mapstructure:"email"`
+	IsOwn                 bool    `mapstructure:"is_own"`
+	IsSub                 bool    `mapstructure:"is_sub"`
+	IsSvc                 bool    `mapstructure:"is_svc"`
+	SubId                 *string `mapstructure:"sub_id"`
+	SvcId                 *string `mapstructure:"svc_id"`
+	IsSelf                bool    `mapstructure:"is_self"`
+	LastName              *string `mapstructure:"last_name"`
+	FirstName             *string `mapstructure:"first_name"`
+	KitStatus             int64   `mapstructure:"kit_status"`
+	LoginName             string  `mapstructure:"login_name"`
+	Description           *string `mapstructure:"description"`
+	IsAdmLocked           bool    `mapstructure:"is_adm_locked"`
+	ParentLoginName       string  `mapstructure:"parent_login_name"`
+	EnableDeleteDate      *string `mapstructure:"enable_delete_date"`
+	KitStatusDescription  string  `mapstructure:"kit_status_description"`
+	AllowDataManipulation bool    `mapstructure:"allow_data_manipulation"`
+}
+
+type NdIpSubnet struct {
+	Bcd                 string      `mapstructure:"bcd"`
+	Gpk                 string      `mapstructure:"gpk"`
+	Cidr                net.IPNet   `mapstructure:"cidr"`
+	Type                string      `mapstructure:"type"`
+	IsOwn               bool        `mapstructure:"is_own"`
+	IsPrivate           bool        `mapstructure:"is_private"`
+	Description         *string     `mapstructure:"description"`
+	IsRoutable          bool        `mapstructure:"is_routable"`
+	IsContainer         bool        `mapstructure:"is_container"`
+	DefaultGateway      *net.IPAddr `mapstructure:"default_gateway"`
+	DhcpLeaseCount      int64       `mapstructure:"dhcp_lease_count"`
+	DnsAddrRrCount      int64       `mapstructure:"dns_addr_rr_count"`
+	DhcpIpAddrCount     int64       `mapstructure:"dhcp_ip_addr_count"`
+	DnsAddrRsvCount     int64       `mapstructure:"dns_addr_rsv_count"`
+	IsIanaRegistered    bool        `mapstructure:"is_iana_registered"`
+	AutoCreateIpAddress bool        `mapstructure:"auto_create_ip_address"`
+}
+
+type NdcfgPPort2moduleType struct {
+	Gpk                    string  `mapstructure:"gpk"`
+	IntGfk                 string  `mapstructure:"int_gfk"`
+	PortType               string  `mapstructure:"port_type"`
+	PortCount              int64   `mapstructure:"port_count"`
+	PortName1              *string `mapstructure:"port_name1"`
+	PortProto              string  `mapstructure:"port_proto"`
+	PortSpeed              string  `mapstructure:"port_speed"`
+	ModuleType             string  `mapstructure:"module_type"`
+	NumModeName            string  `mapstructure:"num_mode_name"`
+	NumModeLevel           int64   `mapstructure:"num_mode_level"`
+	PortIncCount           int64   `mapstructure:"port_inc_count"`
+	PortTypeGroup          string  `mapstructure:"port_type_group"`
+	PortTypeOrder          int64   `mapstructure:"port_type_order"`
+	PortNamePrefix         *string `mapstructure:"port_name_prefix"`
+	PortNameSuffix         *string `mapstructure:"port_name_suffix"`
+	PortNameVarprfx        *string `mapstructure:"port_name_varprfx"`
+	PortNameVarprfxJoinDl  *string `mapstructure:"port_name_varprfx_join_dl"`
+	PortNameVarprfxSplitDl *string `mapstructure:"port_name_varprfx_split_dl"`
+}
+
+type CntlError struct {
+	Gpk    string `mapstructure:"gpk"`
+	Code   int64  `mapstructure:"code"`
+	Type   int64  `mapstructure:"type"`
+	System string `mapstructure:"system"`
+}
+
+type DnsFqdn struct {
+	Gpk                     string       `mapstructure:"gpk"`
+	Type                    string       `mapstructure:"type"`
+	Zone                    string       `mapstructure:"zone"`
+	Label                   *string      `mapstructure:"label"`
+	Value                   string       `mapstructure:"value"`
+	HasRr                   bool         `mapstructure:"has_rr"`
+	IsOwn                   bool         `mapstructure:"is_own"`
+	TreeLevel               int32        `mapstructure:"tree_level"`
+	ValueIdna               string       `mapstructure:"value_idna"`
+	Description             *string      `mapstructure:"description"`
+	ParentValue             *string      `mapstructure:"parent_value"`
+	TypeIsDhcp              bool         `mapstructure:"type_is_dhcp"`
+	TypeIsHost              bool         `mapstructure:"type_is_host"`
+	RootNodeSet             []int64      `mapstructure:"root_node_set"`
+	TypeRadType             int64        `mapstructure:"type_rad_type"`
+	SubFqdnCount            int64        `mapstructure:"sub_fqdn_count"`
+	TypeIsWildcard          bool         `mapstructure:"type_is_wildcard"`
+	TypeIsNonterminal       bool         `mapstructure:"type_is_nonterminal"`
+	IsEmptyNonterminal      bool         `mapstructure:"is_empty_nonterminal"`
+	RrChainTargetIsOwn      bool         `mapstructure:"rr_chain_target_is_own"`
+	RrChainTargetSubnetList *[]net.IPNet `mapstructure:"rr_chain_target_subnet_list"`
+}
+
+type NdcfgSlot2moduleType struct {
+	Gpk                string  `mapstructure:"gpk"`
+	SlotType           string  `mapstructure:"slot_type"`
+	ModuleType         string  `mapstructure:"module_type"`
+	NumModeName        string  `mapstructure:"num_mode_name"`
+	SubslotCount       int64   `mapstructure:"subslot_count"`
+	SubslotName1       *string `mapstructure:"subslot_name1"`
+	NumModeLevel       int64   `mapstructure:"num_mode_level"`
+	SubslotPrefix      *string `mapstructure:"subslot_prefix"`
+	SubslotIncCount    int64   `mapstructure:"subslot_inc_count"`
+	SubslotTypeOrder   int64   `mapstructure:"subslot_type_order"`
+	BackplanePortDescr *string `mapstructure:"backplane_port_descr"`
+}
+
+type NdSlot struct {
+	Gpk            string  `mapstructure:"gpk"`
+	Bldg           *string `mapstructure:"bldg"`
+	Room           *string `mapstructure:"room"`
+	Type           string  `mapstructure:"type"`
+	Label          string  `mapstructure:"label"`
+	FqName         string  `mapstructure:"fq_name"`
+	Description    *string `mapstructure:"description"`
+	LabelSortby    string  `mapstructure:"label_sortby"`
+	ParentFqModule string  `mapstructure:"parent_fq_module"`
+	SubModuleCount int64   `mapstructure:"sub_module_count"`
+}
+
+type NdFloor struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+	NameSortby  int64   `mapstructure:"name_sortby"`
+}
+
+type NdRoom struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Bldg        string  `mapstructure:"bldg"`
+	Name        string  `mapstructure:"name"`
+	Floor       string  `mapstructure:"floor"`
+	Number      string  `mapstructure:"number"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlColumn struct {
+	Gpk                            string  `mapstructure:"gpk"`
+	Name                           string  `mapstructure:"name"`
+	IsWapi                         bool    `mapstructure:"is_wapi"`
+	RefName                        *string `mapstructure:"ref_name"`
+	DataType                       string  `mapstructure:"data_type"`
+	TableName                      string  `mapstructure:"table_name"`
+	IsNullable                     bool    `mapstructure:"is_nullable"`
+	IsRequired                     bool    `mapstructure:"is_required"`
+	IsDeprecated                   bool    `mapstructure:"is_deprecated"`
+	AttributeName                  string  `mapstructure:"attribute_name"`
+	RefTableName                   *string `mapstructure:"ref_table_name"`
+	IsOtGlobalRef                  bool    `mapstructure:"is_ot_global_ref"`
+	ObjectTypeFqName               string  `mapstructure:"object_type_fq_name"`
+	PgAttributeExists              bool    `mapstructure:"pg_attribute_exists"`
+	UseRefColumnLanguageAttributes bool    `mapstructure:"use_ref_column_language_attributes"`
+}
+
+type NdModule struct {
+	Ap           *string `mapstructure:"ap"`
+	Gpk          string  `mapstructure:"gpk"`
+	Bldg         *string `mapstructure:"bldg"`
+	Room         *string `mapstructure:"room"`
+	Type         string  `mapstructure:"type"`
+	Label        string  `mapstructure:"label"`
+	FqName       string  `mapstructure:"fq_name"`
+	IsChild      bool    `mapstructure:"is_child"`
+	RootGfk      string  `mapstructure:"root_gfk"`
+	IsActive     bool    `mapstructure:"is_active"`
+	TreeLevel    int32   `mapstructure:"tree_level"`
+	Description  *string `mapstructure:"description"`
+	HasUnqName   bool    `mapstructure:"has_unq_name"`
+	IsLocDepdnt  bool    `mapstructure:"is_loc_depdnt"`
+	RootNodeSet  []int64 `mapstructure:"root_node_set"`
+	ParentFqSlot *string `mapstructure:"parent_fq_slot"`
+}
+
+type NdcfgPPortType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	IsInternal bool   `mapstructure:"is_internal"`
+}
+
+type NdcfgSlotType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	Class      string `mapstructure:"class"`
+	SlotWidth  int64  `mapstructure:"slot_width"`
+	SubmtCount int64  `mapstructure:"submt_count"`
+}
+
+type NdcfgPPortTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	IsPermanent bool   `mapstructure:"is_permanent"`
+}
+
+type NmAccessGroup struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVlanEgress struct {
+	Gpk      string `mapstructure:"gpk"`
+	VlanGfk  string `mapstructure:"vlan_gfk"`
+	IsTagged bool   `mapstructure:"is_tagged"`
+	LPortGfk string `mapstructure:"l_port_gfk"`
+}
+
+type NdcfgNetInstnc struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlConstraint struct {
+	Gpk                  string   `mapstructure:"gpk"`
+	Name                 string   `mapstructure:"name"`
+	Type                 string   `mapstructure:"type"`
+	RefName              *string  `mapstructure:"ref_name"`
+	DblvlName            *string  `mapstructure:"dblvl_name"`
+	TableName            string   `mapstructure:"table_name"`
+	IsFunction           bool     `mapstructure:"is_function"`
+	IsApiLevel           bool     `mapstructure:"is_api_level"`
+	ColNameList          []string `mapstructure:"col_name_list"`
+	JoinOperator         string   `mapstructure:"join_operator"`
+	IsReferencing        bool     `mapstructure:"is_referencing"`
+	IsJoinDefault        bool     `mapstructure:"is_join_default"`
+	DblvlTableName       *string  `mapstructure:"dblvl_table_name"`
+	IsReferenceable      bool     `mapstructure:"is_referenceable"`
+	ColDataTypeList      []string `mapstructure:"col_data_type_list"`
+	JoinGrantsReadAccess bool     `mapstructure:"join_grants_read_access"`
+}
+
+type NdcfgPPortTypeData struct {
+	Gpk       string `mapstructure:"gpk"`
+	PortType  string `mapstructure:"port_type"`
+	PortGroup string `mapstructure:"port_group"`
+	PortProto string `mapstructure:"port_proto"`
+	PortSpeed string `mapstructure:"port_speed"`
+}
+
+type CntlErrorType struct {
+	Gpk  string `mapstructure:"gpk"`
+	Code int64  `mapstructure:"code"`
+	Name string `mapstructure:"name"`
+}
+
+type NdBldg struct {
+	Gpk         string              `mapstructure:"gpk"`
+	Name        string              `mapstructure:"name"`
+	Number      string              `mapstructure:"number"`
+	Street      *string             `mapstructure:"street"`
+	PostalCode  *int64              `mapstructure:"postal_code"`
+	GeoLocation *map[string]float64 `mapstructure:"geo_location"`
+	SiteFqName  string              `mapstructure:"site_fq_name"`
+}
+
+type NdcfgModuleType struct {
+	Gpk          string `mapstructure:"gpk"`
+	Name         string `mapstructure:"name"`
+	Class        string `mapstructure:"class"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsActive     bool   `mapstructure:"is_active"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	HasUnqName   bool   `mapstructure:"has_unq_name"`
+	IsForwarding bool   `mapstructure:"is_forwarding"`
+	IsLocDepdnt  bool   `mapstructure:"is_loc_depdnt"`
+}
+
+type CntlTable struct {
+	Gpk                        string `mapstructure:"gpk"`
+	Name                       string `mapstructure:"name"`
+	System                     string `mapstructure:"system"`
+	IsLogDst                   bool   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool   `mapstructure:"is_log_src"`
+	IsLangDst                  bool   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool   `mapstructure:"is_lang_src"`
+	IsOtattrDst                bool   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool   `mapstructure:"is_otattr_src"`
+	ContentGender              string `mapstructure:"content_gender"`
+	PgClassExists              bool   `mapstructure:"pg_class_exists"`
+	ObjectTypeFqName           string `mapstructure:"object_type_fq_name"`
+	DoActivateGlobalPk2obj     bool   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool   `mapstructure:"object_type_grants_read_access"`
+}
+
+type NdPPort struct {
+	Gpk                   string  `mapstructure:"gpk"`
+	Name                  string  `mapstructure:"name"`
+	Type                  string  `mapstructure:"type"`
+	Speed                 string  `mapstructure:"speed"`
+	IsNnl                 bool    `mapstructure:"is_nnl"`
+	MdlBldg               *string `mapstructure:"mdl_bldg"`
+	MdlRoom               *string `mapstructure:"mdl_room"`
+	MdlType               string  `mapstructure:"mdl_type"`
+	Protocol              string  `mapstructure:"protocol"`
+	TypeGroup             string  `mapstructure:"type_group"`
+	Description           *string `mapstructure:"description"`
+	MdlFqName             string  `mapstructure:"mdl_fq_name"`
+	NameSortby            string  `mapstructure:"name_sortby"`
+	TypeSortby            int64   `mapstructure:"type_sortby"`
+	IsConnected           bool    `mapstructure:"is_connected"`
+	IsDefective           bool    `mapstructure:"is_defective"`
+	IsEdgeNode            bool    `mapstructure:"is_edge_node"`
+	ConnectedGfk          string  `mapstructure:"connected_gfk"`
+	ConnectedName         *string `mapstructure:"connected_name"`
+	ConnectedMdlBldg      *string `mapstructure:"connected_mdl_bldg"`
+	ConnectedMdlRoom      *string `mapstructure:"connected_mdl_room"`
+	DestConnectedGfk      string  `mapstructure:"dest_connected_gfk"`
+	ConnectionIdNodes     []int64 `mapstructure:"connection_id_nodes"`
+	ConnectionPosition    int32   `mapstructure:"connection_position"`
+	ConnectedMdlFqName    *string `mapstructure:"connected_mdl_fq_name"`
+	IsInternalConnected   bool    `mapstructure:"is_internal_connected"`
+	InternalConnectedGfk  string  `mapstructure:"internal_connected_gfk"`
+	InternalConnectedName *string `mapstructure:"internal_connected_name"`
+}
+
+type NdcfgDeviceType struct {
+	Gpk                   string `mapstructure:"gpk"`
+	Name                  string `mapstructure:"name"`
+	Description           string `mapstructure:"description"`
+	NwFwdLevel            int64  `mapstructure:"nw_fwd_level"`
+	NwFwdLevelDescription string `mapstructure:"nw_fwd_level_description"`
+}
+
+type NdcfgParser struct {
+	Gpk          string                 `mapstructure:"gpk"`
+	Name         string                 `mapstructure:"name"`
+	ExecArgs     map[string]interface{} `mapstructure:"exec_args"`
+	Description  *string                `mapstructure:"description"`
+	AccessGroup  string                 `mapstructure:"access_group"`
+	IsExecutable bool                   `mapstructure:"is_executable"`
+}
+
+type DnsIpAddr struct {
+	Gpk        string     `mapstructure:"gpk"`
+	Cidr       net.IPNet  `mapstructure:"cidr"`
+	Type       string     `mapstructure:"type"`
+	Value      net.IPAddr `mapstructure:"value"`
+	IsOwn      bool       `mapstructure:"is_own"`
+	IsDhcp     bool       `mapstructure:"is_dhcp"`
+	IsReserved bool       `mapstructure:"is_reserved"`
+	IsRrTarget bool       `mapstructure:"is_rr_target"`
+}
+
+type NdSite struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Name             string  `mapstructure:"name"`
+	Type             string  `mapstructure:"type"`
+	FqName           string  `mapstructure:"fq_name"`
+	HasParent        bool    `mapstructure:"has_parent"`
+	Description      *string `mapstructure:"description"`
+	TypeIsChild      bool    `mapstructure:"type_is_child"`
+	ParentFqName     *string `mapstructure:"parent_fq_name"`
+	TypeForceIsChild bool    `mapstructure:"type_force_is_child"`
+}
+
+type CntlRole struct {
+	Gpk                  string                 `mapstructure:"gpk"`
+	Name                 string                 `mapstructure:"name"`
+	System               string                 `mapstructure:"system"`
+	FqName               string                 `mapstructure:"fq_name"`
+	IsRole               bool                   `mapstructure:"is_role"`
+	Position             int64                  `mapstructure:"position"`
+	IsAdminRole          bool                   `mapstructure:"is_admin_role"`
+	ContainedRoles       []interface{}          `mapstructure:"contained_roles"`
+	IsDirectlyAssigned   bool                   `mapstructure:"is_directly_assigned"`
+	ContainedPermissions map[string]interface{} `mapstructure:"contained_permissions"`
+}
+
+type NdcfgNetCmpnd struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdcfgNumMode struct {
+	Gpk   string `mapstructure:"gpk"`
+	Name  string `mapstructure:"name"`
+	Level int64  `mapstructure:"level"`
+}
+
+type NdcfgPPortSpeed struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr2role struct {
+	Gpk          string `mapstructure:"gpk"`
+	Role         string `mapstructure:"role"`
+	System       string `mapstructure:"system"`
+	RoleFqName   string `mapstructure:"role_fq_name"`
+	MgrLoginName string `mapstructure:"mgr_login_name"`
+}
+
+type CntlRole2role struct {
+	Gpk                 string `mapstructure:"gpk"`
+	RoleFqName          string `mapstructure:"role_fq_name"`
+	RoleIsRole          bool   `mapstructure:"role_is_role"`
+	ContainedRoleFqName string `mapstructure:"contained_role_fq_name"`
+}
+
+type NdModule2ap struct {
+	Gpk       string `mapstructure:"gpk"`
+	Bldg      string `mapstructure:"bldg"`
+	Room      string `mapstructure:"room"`
+	ApName    string `mapstructure:"ap_name"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type NdBcd struct {
+	Gpk                         string  `mapstructure:"gpk"`
+	Name                        string  `mapstructure:"name"`
+	Categ                       string  `mapstructure:"categ"`
+	IsOwn                       bool    `mapstructure:"is_own"`
+	Seclvl                      int64   `mapstructure:"seclvl"`
+	Description                 *string `mapstructure:"description"`
+	DhcpDomain                  *string `mapstructure:"dhcp_domain"`
+	DhcpEnabled                 bool    `mapstructure:"dhcp_enabled"`
+	AdminDescription            *string `mapstructure:"admin_description"`
+	DhcpOptT1Percent            uint8   `mapstructure:"dhcp_opt_t1_percent"`
+	DhcpOptT2Percent            uint8   `mapstructure:"dhcp_opt_t2_percent"`
+	DhcpAcceptNewLeases         bool    `mapstructure:"dhcp_accept_new_leases"`
+	DhcpTtlValuePercent         uint8   `mapstructure:"dhcp_ttl_value_percent"`
+	DhcpLeasetimeDynDays        uint8   `mapstructure:"dhcp_leasetime_dyn_days"`
+	DhcpLeasetimeDynHours       uint8   `mapstructure:"dhcp_leasetime_dyn_hours"`
+	DhcpLeasetimeDynMinutes     uint8   `mapstructure:"dhcp_leasetime_dyn_minutes"`
+	DhcpLeasetimeStaticDays     uint8   `mapstructure:"dhcp_leasetime_static_days"`
+	DhcpLeasetimeStaticHours    uint8   `mapstructure:"dhcp_leasetime_static_hours"`
+	DhcpOfferRsvTimeMinutes     uint8   `mapstructure:"dhcp_offer_rsv_time_minutes"`
+	DhcpOfferRsvTimeSeconds     uint8   `mapstructure:"dhcp_offer_rsv_time_seconds"`
+	DhcpLeasetimeStaticMinutes  uint8   `mapstructure:"dhcp_leasetime_static_minutes"`
+	DhcpAcceptRequestedHostname *bool   `mapstructure:"dhcp_accept_requested_hostname"`
+	DhcpDynamicLeaseRemovalTime string  `mapstructure:"dhcp_dynamic_lease_removal_time"`
+	DhcpNewLeasesGetStaticAddr  bool    `mapstructure:"dhcp_new_leases_get_static_addr"`
+	DhcpNewLeasesGetStaticFqdn  bool    `mapstructure:"dhcp_new_leases_get_static_fqdn"`
+}
+
+type NdcfgBcdCateg struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type NdcfgBcdSeclvl struct {
+	Gpk   string `mapstructure:"gpk"`
+	Value int64  `mapstructure:"value"`
+}
+
+type NdDevice struct {
+	Nc               string  `mapstructure:"nc"`
+	Acg              string  `mapstructure:"acg"`
+	Gpk              string  `mapstructure:"gpk"`
+	Fqdn             string  `mapstructure:"fqdn"`
+	Type             string  `mapstructure:"type"`
+	IsValid          bool    `mapstructure:"is_valid"`
+	Sysdescr         *string `mapstructure:"sysdescr"`
+	UsesVlans        bool    `mapstructure:"uses_vlans"`
+	Description      *string `mapstructure:"description"`
+	AssignedParser   string  `mapstructure:"assigned_parser"`
+	ExecutableParser string  `mapstructure:"executable_parser"`
+}
+
+type NdIpIntf struct {
+	Gpk         string     `mapstructure:"gpk"`
+	LPort       string     `mapstructure:"l_port"`
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	DevFqdn     string     `mapstructure:"dev_fqdn"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRoute struct {
+	Gpk        string      `mapstructure:"gpk"`
+	Cidr       net.IPNet   `mapstructure:"cidr"`
+	IsOwn      bool        `mapstructure:"is_own"`
+	Metric     int64       `mapstructure:"metric"`
+	DevFqdn    string      `mapstructure:"dev_fqdn"`
+	DestLPort  *string     `mapstructure:"dest_l_port"`
+	DestIpAddr *net.IPAddr `mapstructure:"dest_ip_addr"`
+}
+
+type NdLPort struct {
+	Gpk                 string    `mapstructure:"gpk"`
+	Lag                 *int64    `mapstructure:"lag"`
+	Name                string    `mapstructure:"name"`
+	Level               int64     `mapstructure:"level"`
+	DevFqdn             string    `mapstructure:"dev_fqdn"`
+	Priority            int64     `mapstructure:"priority"`
+	TagList             *[]string `mapstructure:"tag_list"`
+	AdmState            int64     `mapstructure:"adm_state"`
+	Description         *string   `mapstructure:"description"`
+	NameSortby          string    `mapstructure:"name_sortby"`
+	IngressVlanGfk      *string   `mapstructure:"ingress_vlan_gfk"`
+	AdmStateDescription string    `mapstructure:"adm_state_description"`
+}
+
+type NdcfgNetCmpnd2instnc struct {
+	Gpk       string `mapstructure:"gpk"`
+	NetCmpnd  string `mapstructure:"net_cmpnd"`
+	NetInstnc string `mapstructure:"net_instnc"`
+}
+
+type NdVlan struct {
+	Id          uint16  `mapstructure:"id"`
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	NetInstnc   string  `mapstructure:"net_instnc"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdL2pPort struct {
+	Gpk       string `mapstructure:"gpk"`
+	LPortGfk  string `mapstructure:"l_port_gfk"`
+	PPortGfk  string `mapstructure:"p_port_gfk"`
+	PortOrder int64  `mapstructure:"port_order"`
+}
+
+type NdDeviceAttributeImp struct {
+	Value   *string `mapstructure:"value"`
+	KeyWord string  `mapstructure:"key_word"`
+}
+
+type NdIpIntfImp struct {
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	VrrpId      *int64     `mapstructure:"vrrp_id"`
+	LPortName   string     `mapstructure:"l_port_name"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRouteImp struct {
+	Net           net.IPNet   `mapstructure:"net"`
+	Metric        int64       `mapstructure:"metric"`
+	IsRoutable    bool        `mapstructure:"is_routable"`
+	DestIpAddr    *net.IPAddr `mapstructure:"dest_ip_addr"`
+	DestLPortName *string     `mapstructure:"dest_l_port_name"`
+}
+
+type NdL2pPortImp struct {
+	PortOrder    int64   `mapstructure:"port_order"`
+	LPortName    string  `mapstructure:"l_port_name"`
+	PPortName    string  `mapstructure:"p_port_name"`
+	FqModuleName *string `mapstructure:"fq_module_name"`
+}
+
+type NdLPortImp struct {
+	Lag           *int64         `mapstructure:"lag"`
+	Name          string         `mapstructure:"name"`
+	Prio          *int64         `mapstructure:"prio"`
+	Status        *int64         `mapstructure:"status"`
+	TagList       *[]interface{} `mapstructure:"tag_list"`
+	PortLevel     *int64         `mapstructure:"port_level"`
+	Description   *string        `mapstructure:"description"`
+	VlanIdIngress *uint16        `mapstructure:"vlan_id_ingress"`
+}
+
+type NdVlanEgressImp struct {
+	Id        uint16 `mapstructure:"id"`
+	IsTagged  bool   `mapstructure:"is_tagged"`
+	LPortName string `mapstructure:"l_port_name"`
+}
+
+type NdVlanImp struct {
+	Id        uint16  `mapstructure:"id"`
+	Name      *string `mapstructure:"name"`
+	VxlanVni  *uint32 `mapstructure:"vxlan_vni"`
+	NetInstnc *string `mapstructure:"net_instnc"`
+}
+
+type EvlogRecordType struct {
+	Gpk             string `mapstructure:"gpk"`
+	Subject         string `mapstructure:"subject"`
+	ShortName       string `mapstructure:"short_name"`
+	CommittedAction string `mapstructure:"committed_action"`
+}
+
+type CntlGlobalPk2obj struct {
+	Gpk              string                 `mapstructure:"gpk"`
+	ObjectDict       map[string]interface{} `mapstructure:"object_dict"`
+	ObjectTypeFqName string                 `mapstructure:"object_type_fq_name"`
+}
+
+type CntlConstraint2error struct {
+	Gpk                  string `mapstructure:"gpk"`
+	Sqlstate             string `mapstructure:"sqlstate"`
+	ErrorCode            int64  `mapstructure:"error_code"`
+	ConstraintName       string `mapstructure:"constraint_name"`
+	ErrorTypeCode        int64  `mapstructure:"error_type_code"`
+	ConstraintTable      string `mapstructure:"constraint_table"`
+	ParentKeyNotFound    *bool  `mapstructure:"parent_key_not_found"`
+	ConstraintIsApiLevel bool   `mapstructure:"constraint_is_api_level"`
+}
+
+type NdcfgParser2sysdescr struct {
+	Gpk          string `mapstructure:"gpk"`
+	Parser       string `mapstructure:"parser"`
+	Sysdescr     string `mapstructure:"sysdescr"`
+	IsExecutable bool   `mapstructure:"is_executable"`
+}
+
+type OrgUnitType struct {
+	Gpk       string `mapstructure:"gpk"`
+	Name      string `mapstructure:"name"`
+	Position  int64  `mapstructure:"position"`
+	ShortName string `mapstructure:"short_name"`
+}
+
+type OrgUnit struct {
+	Gpk             string  `mapstructure:"gpk"`
+	Name            string  `mapstructure:"name"`
+	Type            string  `mapstructure:"type"`
+	ShortName       string  `mapstructure:"short_name"`
+	TreeLevel       int32   `mapstructure:"tree_level"`
+	SubPosition     int64   `mapstructure:"sub_position"`
+	RootNodeSet     []int64 `mapstructure:"root_node_set"`
+	IsMgrAssignable bool    `mapstructure:"is_mgr_assignable"`
+	ParentShortName *string `mapstructure:"parent_short_name"`
+}
+
+type NdcfgSlotTypeClass struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+}
+
+type NdcfgSlot2moduleTypeTree struct {
+	Gpk                   string  `mapstructure:"gpk"`
+	SlotType              string  `mapstructure:"slot_type"`
+	ParentGfk             *string `mapstructure:"parent_gfk"`
+	TreeLevel             int32   `mapstructure:"tree_level"`
+	ModuleType            string  `mapstructure:"module_type"`
+	RootNodeSet           []int64 `mapstructure:"root_node_set"`
+	SlotVarname1          *string `mapstructure:"slot_varname1"`
+	SubportPrefix         *string `mapstructure:"subport_prefix"`
+	SubportVarprfx        *string `mapstructure:"subport_varprfx"`
+	SubportVarname1       *string `mapstructure:"subport_varname1"`
+	SubportVarprfxJoinDl  *string `mapstructure:"subport_varprfx_join_dl"`
+	SubportVarprfxSplitDl *string `mapstructure:"subport_varprfx_split_dl"`
+}
+
+type DnscfgFqdnType struct {
+	Gpk                string                 `mapstructure:"gpk"`
+	Name               string                 `mapstructure:"name"`
+	IsOwn              bool                   `mapstructure:"is_own"`
+	IsDhcp             bool                   `mapstructure:"is_dhcp"`
+	IsHost             bool                   `mapstructure:"is_host"`
+	Intname            string                 `mapstructure:"_intname"`
+	Position           int64                  `mapstructure:"position"`
+	RadType            int64                  `mapstructure:"rad_type"`
+	Groupname          string                 `mapstructure:"_groupname"`
+	Description        string                 `mapstructure:"description"`
+	IsWildcard         bool                   `mapstructure:"is_wildcard"`
+	IsNonterminal      bool                   `mapstructure:"is_nonterminal"`
+	VersionNameDict    map[string]interface{} `mapstructure:"version_name_dict"`
+	PermissionFqName   *string                `mapstructure:"permission_fq_name"`
+	RadTypeDescription string                 `mapstructure:"rad_type_description"`
+}
+
+type DnscfgRecordType struct {
+	Gpk                       string  `mapstructure:"gpk"`
+	Name                      string  `mapstructure:"name"`
+	RfcInfo                   *string `mapstructure:"rfc_info"`
+	NumValue                  int64   `mapstructure:"num_value"`
+	IsInternal                bool    `mapstructure:"is_internal"`
+	IsAddrBased               bool    `mapstructure:"is_addr_based"`
+	IsNameBased               bool    `mapstructure:"is_name_based"`
+	ForceAutoDml              bool    `mapstructure:"force_auto_dml"`
+	FqdnTypeDflt              *string `mapstructure:"fqdn_type_dflt"`
+	FqdnInttypeDflt           *string `mapstructure:"_fqdn_inttype_dflt"`
+	TargetIsSingletonDflt     bool    `mapstructure:"target_is_singleton_dflt"`
+	TargetIsReverseUniqueDflt bool    `mapstructure:"target_is_reverse_unique_dflt"`
+}
+
+type DnscfgRecordInttype struct {
+	Gpk                   string                 `mapstructure:"gpk"`
+	IsOwn                 bool                   `mapstructure:"is_own"`
+	Intname               string                 `mapstructure:"_intname"`
+	FqdnType              string                 `mapstructure:"fqdn_type"`
+	Description           string                 `mapstructure:"description"`
+	RecordType            string                 `mapstructure:"record_type"`
+	FqdnInttype           string                 `mapstructure:"_fqdn_inttype"`
+	TargetFqdnType        *string                `mapstructure:"target_fqdn_type"`
+	VersionDefDict        map[string]interface{} `mapstructure:"version_def_dict"`
+	FqdnIsSingleton       bool                   `mapstructure:"fqdn_is_singleton"`
+	PermissionFqName      *string                `mapstructure:"permission_fq_name"`
+	TargetIsSingleton     bool                   `mapstructure:"target_is_singleton"`
+	TargetFqdnInttype     *string                `mapstructure:"_target_fqdn_inttype"`
+	TargetIsReverseUnique bool                   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSet struct {
+	Gpk                 string  `mapstructure:"gpk"`
+	Name                string  `mapstructure:"name"`
+	Description         *string `mapstructure:"description"`
+	SoaDataRetry        uint32  `mapstructure:"soa_data_retry"`
+	SoaDataExpire       uint32  `mapstructure:"soa_data_expire"`
+	SoaDataMinimum      uint32  `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh      uint32  `mapstructure:"soa_data_refresh"`
+	SoaDataHostmaster   string  `mapstructure:"soa_data_hostmaster"`
+	MembersAreExclusive bool    `mapstructure:"members_are_exclusive"`
+	ZoneDataIsExternal  bool    `mapstructure:"zone_data_is_external"`
+}
+
+type DnscfgNsSetMember struct {
+	Gpk              string  `mapstructure:"gpk"`
+	NsFqdn           string  `mapstructure:"ns_fqdn"`
+	NsSetName        string  `mapstructure:"ns_set_name"`
+	NsIsMaster       bool    `mapstructure:"ns_is_master"`
+	NsIsNative       bool    `mapstructure:"ns_is_native"`
+	NsIsPrimary      bool    `mapstructure:"ns_is_primary"`
+	NsIsRegistered   bool    `mapstructure:"ns_is_registered"`
+	NsXferMasterFqdn *string `mapstructure:"ns_xfer_master_fqdn"`
+}
+
+type DnsRecord struct {
+	Gpk                     string       `mapstructure:"gpk"`
+	Ttl                     *uint32      `mapstructure:"ttl"`
+	Data                    *string      `mapstructure:"data"`
+	Fqdn                    string       `mapstructure:"fqdn"`
+	Type                    string       `mapstructure:"type"`
+	Zone                    string       `mapstructure:"zone"`
+	IsOwn                   bool         `mapstructure:"is_own"`
+	IsAuth                  bool         `mapstructure:"is_auth"`
+	FqdnType                string       `mapstructure:"fqdn_type"`
+	HostIsNws               bool         `mapstructure:"host_is_nws"`
+	TargetFqdn              *string      `mapstructure:"target_fqdn"`
+	TargetIpaddr            *net.IPAddr  `mapstructure:"target_ipaddr"`
+	TtlResetDate            *string      `mapstructure:"ttl_reset_date"`
+	TtlResetDays            *uint8       `mapstructure:"ttl_reset_days"`
+	FqdnDescription         *string      `mapstructure:"fqdn_description"`
+	TtlZoneDefault          uint32       `mapstructure:"ttl_zone_default"`
+	TargetIsSingleton       bool         `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique   bool         `mapstructure:"target_is_reverse_unique"`
+	RrChainTargetSubnetList *[]net.IPNet `mapstructure:"rr_chain_target_subnet_list"`
+}
+
+type NdModule2device struct {
+	Gpk       string `mapstructure:"gpk"`
+	DevFqdn   string `mapstructure:"dev_fqdn"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type DnscfgFqdn2perm struct {
+	Gpk              string `mapstructure:"gpk"`
+	Fqdn             string `mapstructure:"fqdn"`
+	IsRecursive      bool   `mapstructure:"is_recursive"`
+	IsZoneBound      bool   `mapstructure:"is_zone_bound"`
+	RecursiveMinLvl  int64  `mapstructure:"recursive_min_lvl"`
+	PermissionFqName string `mapstructure:"permission_fq_name"`
+}
+
+type WapiVersion struct {
+	Major                 int64                  `mapstructure:"major"`
+	Minor                 int64                  `mapstructure:"minor"`
+	Patch                 int64                  `mapstructure:"patch"`
+	DocUri                string                 `mapstructure:"doc_uri"`
+	Numeric               string                 `mapstructure:"numeric"`
+	Semantic              string                 `mapstructure:"semantic"`
+	LanguageDict          map[string]interface{} `mapstructure:"language_dict"`
+	OperationMode         string                 `mapstructure:"operation_mode"`
+	LastStatusChangeDate  string                 `mapstructure:"last_status_change_date"`
+	TransactionJsonSchema map[string]interface{} `mapstructure:"transaction_json_schema"`
+}
+
+type WapiVersionState struct {
+	Gpk      string `mapstructure:"gpk"`
+	Numeric  int64  `mapstructure:"numeric"`
+	Semantic string `mapstructure:"semantic"`
+}
+
+type WapiSystem struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectType struct {
+	Name                       string                 `mapstructure:"name"`
+	System                     string                 `mapstructure:"system"`
+	FqName                     string                 `mapstructure:"fq_name"`
+	Attributes                 map[string]interface{} `mapstructure:"attributes"`
+	IsLogDst                   bool                   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool                   `mapstructure:"is_log_src"`
+	Constraints                map[string]interface{} `mapstructure:"constraints"`
+	IsLangDst                  bool                   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool                   `mapstructure:"is_lang_src"`
+	Referencing                map[string]interface{} `mapstructure:"referencing"`
+	IsOtattrDst                bool                   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool                   `mapstructure:"is_otattr_src"`
+	Referenceable              map[string]interface{} `mapstructure:"referenceable"`
+	DoActivateGlobalPk2obj     bool                   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool                   `mapstructure:"object_type_grants_read_access"`
+}
+
+type CntlDataType struct {
+	Pk                 int64    `mapstructure:"pk"`
+	Gpk                string   `mapstructure:"gpk"`
+	Name               string   `mapstructure:"name"`
+	BaseName           string   `mapstructure:"base_name"`
+	BaseNspc           *string  `mapstructure:"base_nspc"`
+	JsonName           string   `mapstructure:"json_name"`
+	IsPrimary          bool     `mapstructure:"is_primary"`
+	TextLength         *int64   `mapstructure:"text_length"`
+	PgTypeName         string   `mapstructure:"pg_type_name"`
+	PgTypeNspc         string   `mapstructure:"pg_type_nspc"`
+	OperatorList       []string `mapstructure:"operator_list"`
+	FormatLiteral      *string  `mapstructure:"format_literal"`
+	ConvDatyValAttname string   `mapstructure:"conv_daty_val_attname"`
+}
+
+type WapiFunction struct {
+	Name               string                 `mapstructure:"name"`
+	System             string                 `mapstructure:"system"`
+	FqName             string                 `mapstructure:"fq_name"`
+	Parameters         map[string]interface{} `mapstructure:"parameters"`
+	ObjectType         string                 `mapstructure:"object_type"`
+	IsReturning        bool                   `mapstructure:"is_returning"`
+	IsExecutable       bool                   `mapstructure:"is_executable"`
+	IsDataManipulating bool                   `mapstructure:"is_data_manipulating"`
+}
+
+type Dhcpv4GlobalOption struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Code        int64   `mapstructure:"code"`
+	Data        string  `mapstructure:"data"`
+	Name        string  `mapstructure:"name"`
+	DataType    string  `mapstructure:"data_type"`
+	Reference   *string `mapstructure:"reference"`
+	Description *string `mapstructure:"description"`
+	IsGenerated bool    `mapstructure:"is_generated"`
+}
+
+type NdcfgSiteType struct {
+	Gpk          string `mapstructure:"gpk"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	ShortName    string `mapstructure:"short_name"`
+	ForceIsChild bool   `mapstructure:"force_is_child"`
+}
+
+type Dhcpv4Lease struct {
+	Gpk                  string                  `mapstructure:"gpk"`
+	IsOwn                bool                    `mapstructure:"is_own"`
+	FqdnValue            *string                 `mapstructure:"fqdn_value"`
+	IsExpired            bool                    `mapstructure:"is_expired"`
+	IsOffered            bool                    `mapstructure:"is_offered"`
+	TsExpires            string                  `mapstructure:"ts_expires"`
+	FqdnIsDhcp           bool                    `mapstructure:"fqdn_is_dhcp"`
+	IpAddrValue          *net.IPAddr             `mapstructure:"ip_addr_value"`
+	IpSubnetCidr         net.IPNet               `mapstructure:"ip_subnet_cidr"`
+	IsStaticAddr         bool                    `mapstructure:"is_static_addr"`
+	IsStaticFqdn         bool                    `mapstructure:"is_static_fqdn"`
+	LeasetimeDays        *uint8                  `mapstructure:"leasetime_days"`
+	MacAddrValue         *net.HardwareAddr       `mapstructure:"mac_addr_value"`
+	IpAddrIsDhcp         bool                    `mapstructure:"ip_addr_is_dhcp"`
+	LeasetimeHours       *uint8                  `mapstructure:"leasetime_hours"`
+	TsLastChanged        string                  `mapstructure:"ts_last_changed"`
+	AdmStatusDescr       *string                 `mapstructure:"adm_status_descr"`
+	ClientIdentifier     *string                 `mapstructure:"client_identifier"`
+	LeasetimeMinutes     *uint8                  `mapstructure:"leasetime_minutes"`
+	OperStatusDescr      *string                 `mapstructure:"oper_status_descr"`
+	ClientOptionsDict    *map[string]interface{} `mapstructure:"client_options_dict"`
+	ServerOptionsDict    *map[string]interface{} `mapstructure:"server_options_dict"`
+	AlwaysMatchByMacAddr bool                    `mapstructure:"always_match_by_mac_addr"`
+}
+
+type Dhcpv4SubnetOption struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Code         int64     `mapstructure:"code"`
+	Data         string    `mapstructure:"data"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	Priority     int64     `mapstructure:"priority"`
+	CodeDataType string    `mapstructure:"code_data_type"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4Og struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Name         string    `mapstructure:"name"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4GroupOption struct {
+	Gpk          string `mapstructure:"gpk"`
+	Code         int64  `mapstructure:"code"`
+	Data         string `mapstructure:"data"`
+	IsOwn        bool   `mapstructure:"is_own"`
+	OgGfk        string `mapstructure:"og_gfk"`
+	Priority     int64  `mapstructure:"priority"`
+	CodeDataType string `mapstructure:"code_data_type"`
+}
+
+type NdcfgSiteType2type struct {
+	Gpk             string `mapstructure:"gpk"`
+	ChildShortName  string `mapstructure:"child_short_name"`
+	ParentShortName string `mapstructure:"parent_short_name"`
+}
+
+type CntlColumnKvtab struct {
+	Gpk        string `mapstructure:"gpk"`
+	Key        string `mapstructure:"key"`
+	Position   *int64 `mapstructure:"position"`
+	TableName  string `mapstructure:"table_name"`
+	ColumnName string `mapstructure:"column_name"`
+}
+
+type NdDiqTa struct {
+	Gpk               string  `mapstructure:"gpk"`
+	Owner             string  `mapstructure:"owner"`
+	IsOwn             bool    `mapstructure:"is_own"`
+	Position          *int64  `mapstructure:"position"`
+	IsActive          bool    `mapstructure:"is_active"`
+	IsWorking         bool    `mapstructure:"is_working"`
+	ParentGfk         *string `mapstructure:"parent_gfk"`
+	MailOnError       bool    `mapstructure:"mail_on_error"`
+	LastDevimpTs      *string `mapstructure:"last_devimp_ts"`
+	LastDevimpMsg     *string `mapstructure:"last_devimp_msg"`
+	MailOnSuccess     bool    `mapstructure:"mail_on_success"`
+	PreserveOnError   bool    `mapstructure:"preserve_on_error"`
+	LastDevimpSuccess *bool   `mapstructure:"last_devimp_success"`
+	PreserveOnSuccess bool    `mapstructure:"preserve_on_success"`
+}
+
+type NdDiqTaEntry struct {
+	Gpk               string                 `mapstructure:"gpk"`
+	DevNc             string                 `mapstructure:"dev_nc"`
+	DevAcg            string                 `mapstructure:"dev_acg"`
+	DoSave            bool                   `mapstructure:"do_save"`
+	DevFqdn           string                 `mapstructure:"dev_fqdn"`
+	DevType           string                 `mapstructure:"dev_type"`
+	DoParse           bool                   `mapstructure:"do_parse"`
+	DoImport          bool                   `mapstructure:"do_import"`
+	DevParser         string                 `mapstructure:"dev_parser"`
+	DiqTaGfk          string                 `mapstructure:"diq_ta_gfk"`
+	DiqTaIsOwn        bool                   `mapstructure:"diq_ta_is_own"`
+	DevDescription    *string                `mapstructure:"dev_description"`
+	LastDevimpMsg     *string                `mapstructure:"last_devimp_msg"`
+	UploadFilename    *string                `mapstructure:"upload_filename"`
+	OutputVerbosity   bool                   `mapstructure:"output_verbosity"`
+	DevAttributesDict map[string]interface{} `mapstructure:"dev_attributes_dict"`
+	LastDevimpSuccess *bool                  `mapstructure:"last_devimp_success"`
+	RplcCharsetErrors bool                   `mapstructure:"rplc_charset_errors"`
+}
+
+type DnscfgFqdnTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+}
+
+type WapiException struct {
+	Hint              *string                `mapstructure:"hint"`
+	Error             map[string]interface{} `mapstructure:"error"`
+	Others            map[string]interface{} `mapstructure:"others"`
+	Traceback         []interface{}          `mapstructure:"traceback"`
+	Constraint        map[string]interface{} `mapstructure:"constraint"`
+	ErrorType         map[string]interface{} `mapstructure:"error_type"`
+	StackedDiagParams map[string]interface{} `mapstructure:"stacked_diag_params"`
+}
+
+type EvlogRecord struct {
+	Data             *string `mapstructure:"data"`
+	Type             string  `mapstructure:"type"`
+	ObjectGfk        string  `mapstructure:"object_gfk"`
+	LanguageTag      string  `mapstructure:"language_tag"`
+	TaTimestamp      string  `mapstructure:"ta_timestamp"`
+	MgrLoginName     *string `mapstructure:"mgr_login_name"`
+	ObjectTypeFqName string  `mapstructure:"object_type_fq_name"`
+}
+
+type CntlWapiAuth struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Type             string  `mapstructure:"type"`
+	Token            string  `mapstructure:"token"`
+	IsOwn            bool    `mapstructure:"is_own"`
+	IsExpired        bool    `mapstructure:"is_expired"`
+	LoginName        string  `mapstructure:"login_name"`
+	DeleteDate       string  `mapstructure:"delete_date"`
+	Description      *string `mapstructure:"description"`
+	ExpirationDate   *string `mapstructure:"expiration_date"`
+	LastLoginDate    *string `mapstructure:"last_login_date"`
+	TypeDescription  string  `mapstructure:"type_description"`
+	LastGenerateDate string  `mapstructure:"last_generate_date"`
+}
+
+type DnssecZoneKey struct {
+	Gpk            string   `mapstructure:"gpk"`
+	Tag            *uint32  `mapstructure:"tag"`
+	Data           *string  `mapstructure:"data"`
+	Fqdn           string   `mapstructure:"fqdn"`
+	Flags          int64    `mapstructure:"flags"`
+	IsKsk          bool     `mapstructure:"is_ksk"`
+	IsActive       bool     `mapstructure:"is_active"`
+	CreationTs     string   `mapstructure:"creation_ts"`
+	ActivationTs   *string  `mapstructure:"activation_ts"`
+	DnskeyRrData   string   `mapstructure:"dnskey_rr_data"`
+	DeactivationTs *string  `mapstructure:"deactivation_ts"`
+	DsRrDataList   []string `mapstructure:"ds_rr_data_list"`
+}
+
+type CntlMgr2group struct {
+	Gpk                string  `mapstructure:"gpk"`
+	IsOwn              bool    `mapstructure:"is_own"`
+	GroupName          string  `mapstructure:"group_name"`
+	MgrLoginName       string  `mapstructure:"mgr_login_name"`
+	ParentGroupName    string  `mapstructure:"parent_group_name"`
+	ParentMgrLoginName *string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	FqdnValue       string `mapstructure:"fqdn_value"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type DhcpcfgOperator struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type DhcpcfgDt2operator2dt struct {
+	Gpk           string `mapstructure:"gpk"`
+	Operator      string `mapstructure:"operator"`
+	LeftDataType  string `mapstructure:"left_data_type"`
+	RightDataType string `mapstructure:"right_data_type"`
+}
+
+type Dhcpv4SubnetOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	SnOptGfk       string `mapstructure:"sn_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type Dhcpv4GroupOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	OgOptGfk       string `mapstructure:"og_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type MacauthClient struct {
+	Gpk               string           `mapstructure:"gpk"`
+	IsOwn             bool             `mapstructure:"is_own"`
+	WpaKey            *string          `mapstructure:"wpa_key"`
+	BcdName           string           `mapstructure:"bcd_name"`
+	MacAddr           net.HardwareAddr `mapstructure:"mac_addr"`
+	Description       *string          `mapstructure:"description"`
+	LastLoginDate     *string          `mapstructure:"last_login_date"`
+	LastLoginNodeInfo *string          `mapstructure:"last_login_node_info"`
+}
+
+type NdVlan2device struct {
+	Gpk     string `mapstructure:"gpk"`
+	DevFqdn string `mapstructure:"dev_fqdn"`
+	VlanGfk string `mapstructure:"vlan_gfk"`
+}
+
+type NdcfgLPortTag struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Value       string  `mapstructure:"value"`
+	LevelList   []int16 `mapstructure:"level_list"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan struct {
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Vni         uint32  `mapstructure:"vni"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan2device struct {
+	Gpk      string `mapstructure:"gpk"`
+	DevFqdn  string `mapstructure:"dev_fqdn"`
+	VxlanVni uint32 `mapstructure:"vxlan_vni"`
+}
+
+type CntlGroup struct {
+	Gpk                     string  `mapstructure:"gpk"`
+	Name                    string  `mapstructure:"name"`
+	IsOwn                   bool    `mapstructure:"is_own"`
+	IsSub                   bool    `mapstructure:"is_sub"`
+	SubId                   *string `mapstructure:"sub_id"`
+	IsAdmin                 bool    `mapstructure:"is_admin"`
+	Description             *string `mapstructure:"description"`
+	DoIdmSync               bool    `mapstructure:"do_idm_sync"`
+	ParentName              string  `mapstructure:"parent_name"`
+	OuShortName             *string `mapstructure:"ou_short_name"`
+	IdmDescription          *string `mapstructure:"idm_description"`
+	IdmSyncLastTs           *string `mapstructure:"idm_sync_last_ts"`
+	IdmSyncIsActive         bool    `mapstructure:"idm_sync_is_active"`
+	IdmSyncLastState        *string `mapstructure:"idm_sync_last_state"`
+	IdmSyncMaxMgrCount      int64   `mapstructure:"idm_sync_max_mgr_count"`
+	IdmSyncLastSuccessfulTs *string `mapstructure:"idm_sync_last_successful_ts"`
+}
+
+type NdBcd2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	BcdName         string `mapstructure:"bcd_name"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type CntlMgr2ou struct {
+	Gpk                string `mapstructure:"gpk"`
+	IsOwn              bool   `mapstructure:"is_own"`
+	IsSub              bool   `mapstructure:"is_sub"`
+	OuShortName        string `mapstructure:"ou_short_name"`
+	MgrLoginName       string `mapstructure:"mgr_login_name"`
+	ParentOuShortName  string `mapstructure:"parent_ou_short_name"`
+	ParentMgrLoginName string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	FqdnValue   string `mapstructure:"fqdn_value"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlOtAttrDef struct {
+	Gpk                        string  `mapstructure:"gpk"`
+	KeyWord                    string  `mapstructure:"key_word"`
+	DataType                   string  `mapstructure:"data_type"`
+	ObjectTypeFqName           string  `mapstructure:"object_type_fq_name"`
+	InsTrgFuncFqName           *string `mapstructure:"ins_trg_func_fq_name"`
+	UpdTrgFuncFqName           *string `mapstructure:"upd_trg_func_fq_name"`
+	RefObjectTypeFqName        string  `mapstructure:"ref_object_type_fq_name"`
+	ObjectTypeRefAttributeName string  `mapstructure:"object_type_ref_attribute_name"`
+}
+
+type CntlOtAttrKey struct {
+	SetMode             int64   `mapstructure:"set_mode"`
+	DisplayMode         int64   `mapstructure:"display_mode"`
+	DefaultValue        *string `mapstructure:"default_value"`
+	ValIsUnique         bool    `mapstructure:"val_is_unique"`
+	RefObjectGfk        *string `mapstructure:"ref_object_gfk"`
+	ValIsNullable       bool    `mapstructure:"val_is_nullable"`
+	DisplayPosition     int64   `mapstructure:"display_position"`
+	PermissionFqName    *string `mapstructure:"permission_fq_name"`
+	ObjectTypeFqName    string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord    string  `mapstructure:"ot_attr_def_key_word"`
+	RefObjectTypeFqName string  `mapstructure:"ref_object_type_fq_name"`
+}
+
+type CntlOtAttrVal struct {
+	Value            *string `mapstructure:"value"`
+	DataType         string  `mapstructure:"data_type"`
+	ObjectGfk        string  `mapstructure:"object_gfk"`
+	RefObjectGfk     *string `mapstructure:"ref_object_gfk"`
+	ObjectTypeFqName string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord string  `mapstructure:"ot_attr_def_key_word"`
+}
+
+type NdBcd2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	BcdName     string `mapstructure:"bcd_name"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlReplication struct {
+	Gpk      string `mapstructure:"gpk"`
+	Name     string `mapstructure:"name"`
+	OperMode string `mapstructure:"oper_mode"`
+}
+
+type CntlReplicationPub2sub struct {
+	Gpk                   string `mapstructure:"gpk"`
+	DoInit                bool   `mapstructure:"do_init"`
+	PublisherFqdn         string `mapstructure:"publisher_fqdn"`
+	SubscriberFqdn        string `mapstructure:"subscriber_fqdn"`
+	ReplicationName       string `mapstructure:"replication_name"`
+	ReplicationOperMode   string `mapstructure:"replication_oper_mode"`
+	ReplicationSlotSuffix string `mapstructure:"replication_slot_suffix"`
+}
+
+type WapiDataType struct {
+	Name          string                 `mapstructure:"name"`
+	JsonName      string                 `mapstructure:"json_name"`
+	TextLength    *int64                 `mapstructure:"text_length"`
+	LanguageDict  map[string]interface{} `mapstructure:"language_dict"`
+	OperatorList  []string               `mapstructure:"operator_list"`
+	FormatLiteral *string                `mapstructure:"format_literal"`
+}
+
+type WapiDataTypeOperator struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+	DataTypeList []string               `mapstructure:"data_type_list"`
+}
+
+type DnsRecordImp struct {
+	Ttl                   *uint32 `mapstructure:"ttl"`
+	Type                  *string `mapstructure:"type"`
+	DataList              *string `mapstructure:"data_list"`
+	TtlResetDays          *uint8  `mapstructure:"ttl_reset_days"`
+	TargetIsSingleton     *bool   `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique *bool   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSetHost struct {
+	Gpk       string `mapstructure:"gpk"`
+	HostFqdn  string `mapstructure:"host_fqdn"`
+	NsSetName string `mapstructure:"ns_set_name"`
+}
+
+type Dhcpv4Og2lease struct {
+	Gpk      string `mapstructure:"gpk"`
+	IsOwn    bool   `mapstructure:"is_own"`
+	OgGfk    string `mapstructure:"og_gfk"`
+	Priority int64  `mapstructure:"priority"`
+	LeaseGfk string `mapstructure:"lease_gfk"`
+}
+
+type CntlDataTypeOperator struct {
+	Gpk          string   `mapstructure:"gpk"`
+	Name         string   `mapstructure:"name"`
+	DataTypeList []string `mapstructure:"data_type_list"`
+}
+
+type TmpGenericObject struct {
+	Dict     map[string]interface{}   `mapstructure:"_dict"`
+	DictList []map[string]interface{} `mapstructure:"_dict_list"`
+}
+
+type NdVxlanImp struct {
+	Vni *uint32 `mapstructure:"vni"`
+}
+
+type WapiMaintState struct {
+	Pk                int64                  `mapstructure:"pk"`
+	TsEnd             string                 `mapstructure:"ts_end"`
+	Subject           string                 `mapstructure:"subject"`
+	Duration          string                 `mapstructure:"duration"`
+	TsBegin           string                 `mapstructure:"ts_begin"`
+	IsActive          bool                   `mapstructure:"is_active"`
+	LanguageDict      map[string]interface{} `mapstructure:"language_dict"`
+	CntlErrorCode     int64                  `mapstructure:"cntl_error_code"`
+	CntlErrorTypeCode int64                  `mapstructure:"cntl_error_type_code"`
+	CntlErrorTypeName string                 `mapstructure:"cntl_error_type_name"`
+}
+
+type CntlLanguage struct {
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsActive  bool   `mapstructure:"is_active"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type CntlOtLangAttrDef struct {
+	KeyWord          string `mapstructure:"key_word"`
+	IsStatic         bool   `mapstructure:"is_static"`
+	IsPrimary        bool   `mapstructure:"is_primary"`
+	ObjectTypeFqName string `mapstructure:"object_type_fq_name"`
+}
+
+type CntlOtLangAttrVal struct {
+	Value                *string `mapstructure:"value"`
+	ObjectGfk            string  `mapstructure:"object_gfk"`
+	LanguageTag          string  `mapstructure:"language_tag"`
+	ObjectTypeFqName     string  `mapstructure:"object_type_fq_name"`
+	OtLangAttrDefKeyWord string  `mapstructure:"ot_lang_attr_def_key_word"`
+}
+
+type WapiLanguage struct {
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type WapiObjectTypeLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectTypeAttrLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type TmpDiag4gpk struct {
+	ObjectGpk      string `mapstructure:"object_gpk"`
+	SystemName     string `mapstructure:"system_name"`
+	ObjectTypeName string `mapstructure:"object_type_name"`
+}
+
diff --git a/4.0/golang/tmp.py b/4.0/golang/tmp.py
deleted file mode 100644
index bfaa8ac..0000000
--- a/4.0/golang/tmp.py
+++ /dev/null
@@ -1,111 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GenericObject(APIObject):
-	_dict: dict
-	_dict_list: list
-
-	def __post_init__(self):
-		if not isinstance(self._dict, dict):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(self._dict)}")
-		if not isinstance(self._dict_list, list):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(self._dict_list)}")
-
-	@staticmethod
-	def create_ta(_dict_new: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		return {'name': 'tmp.generic_object.create', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, _dict_new: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(_dict_new=_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(_dict_list_old: list = []) -> dict:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		return {'name': 'tmp.generic_object.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'_dict_list': _dict_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, _dict_list_old: list = []) -> list:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(_dict_list_old=_dict_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_dict_new: dict = {}, _dict_old: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		return {'name': 'tmp.generic_object.update', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({'_dict': _dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _dict_new: dict = {}, _dict_old: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(_dict_new=_dict_new, _dict_old=_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Diag4gpk(APIObject):
-	object_gpk: str
-	system_name: str
-	object_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.object_gpk, str):
-			raise ValueError(f"'object_gpk' of incorrect type. Expected str, got {type(self.object_gpk)}")
-		if not isinstance(self.system_name, str):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(self.system_name)}")
-		if not isinstance(self.object_type_name, str):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(self.object_type_name)}")
-
-	@staticmethod
-	def list_ta(system_name_old: str = None, object_type_name_old: str = None) -> dict:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		return {'name': 'tmp.diag4gpk.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'system_name': system_name_old, 'object_type_name': object_type_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, system_name_old: str = None, object_type_name_old: str = None) -> list:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(system_name_old=system_name_old, object_type_name_old=object_type_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.0/golang/wapi.py b/4.0/golang/wapi.py
deleted file mode 100644
index a7f3b02..0000000
--- a/4.0/golang/wapi.py
+++ /dev/null
@@ -1,855 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Version(APIObject):
-	major: int
-	minor: int
-	patch: int
-	doc_uri: str
-	numeric: str
-	semantic: str
-	language_dict: dict
-	operation_mode: str
-	last_status_change_date: str
-	transaction_json_schema: dict
-
-	def __post_init__(self):
-		if not isinstance(self.major, int):
-			raise ValueError(f"'major' of incorrect type. Expected int, got {type(self.major)}")
-		if not isinstance(self.minor, int):
-			raise ValueError(f"'minor' of incorrect type. Expected int, got {type(self.minor)}")
-		if not isinstance(self.patch, int):
-			raise ValueError(f"'patch' of incorrect type. Expected int, got {type(self.patch)}")
-		if not isinstance(self.doc_uri, str):
-			raise ValueError(f"'doc_uri' of incorrect type. Expected str, got {type(self.doc_uri)}")
-		if not isinstance(self.numeric, str):
-			raise ValueError(f"'numeric' of incorrect type. Expected str, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operation_mode, str):
-			raise ValueError(f"'operation_mode' of incorrect type. Expected str, got {type(self.operation_mode)}")
-		if not isinstance(self.last_status_change_date, str):
-			raise ValueError(f"'last_status_change_date' of incorrect type. Expected str, got {type(self.last_status_change_date)}")
-		if not isinstance(self.transaction_json_schema, dict):
-			raise ValueError(f"'transaction_json_schema' of incorrect type. Expected dict, got {type(self.transaction_json_schema)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VersionState(APIObject):
-	gpk: str
-	numeric: int
-	semantic: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.numeric, int):
-			raise ValueError(f"'numeric' of incorrect type. Expected int, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class System(APIObject):
-	name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.system.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectType(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	attributes: dict
-	is_log_dst: bool
-	is_log_src: bool
-	constraints: dict
-	is_lang_dst: bool
-	is_lang_src: bool
-	referencing: dict
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	referenceable: dict
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.attributes, dict):
-			raise ValueError(f"'attributes' of incorrect type. Expected dict, got {type(self.attributes)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.constraints, dict):
-			raise ValueError(f"'constraints' of incorrect type. Expected dict, got {type(self.constraints)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.referencing, dict):
-			raise ValueError(f"'referencing' of incorrect type. Expected dict, got {type(self.referencing)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.referenceable, dict):
-			raise ValueError(f"'referenceable' of incorrect type. Expected dict, got {type(self.referenceable)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Function(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	parameters: dict
-	object_type: str
-	is_returning: bool
-	is_executable: bool
-	is_data_manipulating: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.parameters, dict):
-			raise ValueError(f"'parameters' of incorrect type. Expected dict, got {type(self.parameters)}")
-		if not isinstance(self.object_type, str):
-			raise ValueError(f"'object_type' of incorrect type. Expected str, got {type(self.object_type)}")
-		if not isinstance(self.is_returning, bool):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(self.is_returning)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-		if not isinstance(self.is_data_manipulating, bool):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(self.is_data_manipulating)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-
-		return {'name': 'wapi.function.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'is_returning': is_returning_old, 'is_executable': is_executable_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_data_manipulating': is_data_manipulating_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, is_returning_old=is_returning_old, is_executable_old=is_executable_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_data_manipulating_old=is_data_manipulating_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Exception(APIObject):
-	hint: str
-	error: dict
-	others: dict
-	traceback: list
-	constraint: dict
-	error_type: dict
-	stacked_diag_params: dict
-
-	def __post_init__(self):
-		if self.hint is not None and not isinstance(self.hint, str):
-			raise ValueError(f"'hint' of incorrect type. Expected str, got {type(self.hint)}")
-		if not isinstance(self.error, dict):
-			raise ValueError(f"'error' of incorrect type. Expected dict, got {type(self.error)}")
-		if not isinstance(self.others, dict):
-			raise ValueError(f"'others' of incorrect type. Expected dict, got {type(self.others)}")
-		if not isinstance(self.traceback, list):
-			raise ValueError(f"'traceback' of incorrect type. Expected list, got {type(self.traceback)}")
-		if not isinstance(self.constraint, dict):
-			raise ValueError(f"'constraint' of incorrect type. Expected dict, got {type(self.constraint)}")
-		if not isinstance(self.error_type, dict):
-			raise ValueError(f"'error_type' of incorrect type. Expected dict, got {type(self.error_type)}")
-		if not isinstance(self.stacked_diag_params, dict):
-			raise ValueError(f"'stacked_diag_params' of incorrect type. Expected dict, got {type(self.stacked_diag_params)}")
-
-@dataclass()
-class DataType(APIObject):
-	name: str
-	json_name: str
-	text_length: int
-	language_dict: dict
-	operator_list: list
-	format_literal: str
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'json_name': json_name_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(json_name_old=json_name_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	name: str
-	language_dict: dict
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type_operator.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, data_type_old: str = None, language_dict_old: dict = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'data_type': data_type_old, 'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, data_type_old: str = None, language_dict_old: dict = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, data_type_old=data_type_old, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class MaintState(APIObject):
-	pk: int
-	ts_end: str
-	subject: str
-	duration: str
-	ts_begin: str
-	is_active: bool
-	language_dict: dict
-	cntl_error_code: int
-	cntl_error_type_code: int
-	cntl_error_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.ts_end, str):
-			raise ValueError(f"'ts_end' of incorrect type. Expected str, got {type(self.ts_end)}")
-		if not isinstance(self.subject, str):
-			raise ValueError(f"'subject' of incorrect type. Expected str, got {type(self.subject)}")
-		if not isinstance(self.duration, str):
-			raise ValueError(f"'duration' of incorrect type. Expected str, got {type(self.duration)}")
-		if not isinstance(self.ts_begin, str):
-			raise ValueError(f"'ts_begin' of incorrect type. Expected str, got {type(self.ts_begin)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.cntl_error_code, int):
-			raise ValueError(f"'cntl_error_code' of incorrect type. Expected int, got {type(self.cntl_error_code)}")
-		if not isinstance(self.cntl_error_type_code, int):
-			raise ValueError(f"'cntl_error_type_code' of incorrect type. Expected int, got {type(self.cntl_error_type_code)}")
-		if not isinstance(self.cntl_error_type_name, str):
-			raise ValueError(f"'cntl_error_type_name' of incorrect type. Expected str, got {type(self.cntl_error_type_name)}")
-
-	@staticmethod
-	def list_ta(is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.maint_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	tag: str
-	name: str
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeAttrLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_attr_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/__init__.py b/4.1/golang/__init__.py
deleted file mode 100644
index a79b8b6..0000000
--- a/4.1/golang/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-### AUTOGENERATED
-import requests
-from typing import Union
-from pprint import pformat
-
-
-# ExeccutionError is derived from ValueError to keep backward compatibility.
-class ExecutionError(ValueError):
-	"""Raise if API returns an error code != 400"""
-
-	def __init__(self, status_code, reason, result):
-		self.status_code = status_code
-		self.reason = reason
-		self.result = result
-		message = f'Request returned unexpected result ({self.status_code}: {self.reason}). Result: \n{pformat(self.result)}'
-		super().__init__(message)
-
-
-class APIObject(object):
-	pass
-
-
-class ExplicitNull(object):
-	pass
-
-
-class APIEndpoint(object):
-	def __init__(self, base_url: str, token: str, **kwargs):
-		self.base_url = base_url
-		self.version = '4.1'
-		self.token = token
-
-
-class APISession(object):
-	def __init__(self, endpoint: APIEndpoint):
-		self.session = requests.session()
-		self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token})
-		if 'www-net' in endpoint.base_url:
-			self.base_url = f'https://{endpoint.base_url}/api/{endpoint.version}'
-		else:
-			self.base_url = f'https://{endpoint.base_url}/{endpoint.version}'
-
-	def execute_ta(self, ta: list, dry_mode: bool = False, dict_mode: bool = False, su_login_name: str = None) -> Union[list, dict]:
-		res = self.session.post(f'{self.base_url}/wapi/transaction/execute?dry_mode={str(dry_mode).lower()}&dict_mode={str(dict_mode).lower()}{"" if su_login_name is None else "&su_login_name="+su_login_name}', json=ta)
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return res.json()
-
-	def close(self):
-		self.session.close()
-
-
-def _denullify_dict(d):
-	d = {k:v for k,v in d.items() if v is not None}
-	for k,v in d.items():
-		if isinstance(v, ExplicitNull):
-			d[k] = None
-	return d
diff --git a/4.1/golang/cntl.py b/4.1/golang/cntl.py
deleted file mode 100644
index 6f59f85..0000000
--- a/4.1/golang/cntl.py
+++ /dev/null
@@ -1,4862 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class System(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.system.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr(APIObject):
-	gpk: str
-	email: str
-	is_own: bool
-	is_sub: bool
-	is_svc: bool
-	sub_id: str
-	svc_id: str
-	is_self: bool
-	last_name: str
-	first_name: str
-	kit_status: int
-	login_name: str
-	description: str
-	is_deletable: bool
-	is_adm_locked: bool
-	parent_login_name: str
-	allow_data_manipulation: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.email is not None and not isinstance(self.email, str):
-			raise ValueError(f"'email' of incorrect type. Expected str, got {type(self.email)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.is_svc, bool):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(self.is_svc)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if self.svc_id is not None and not isinstance(self.svc_id, str):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(self.svc_id)}")
-		if not isinstance(self.is_self, bool):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(self.is_self)}")
-		if self.last_name is not None and not isinstance(self.last_name, str):
-			raise ValueError(f"'last_name' of incorrect type. Expected str, got {type(self.last_name)}")
-		if self.first_name is not None and not isinstance(self.first_name, str):
-			raise ValueError(f"'first_name' of incorrect type. Expected str, got {type(self.first_name)}")
-		if not isinstance(self.kit_status, int):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(self.kit_status)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_deletable, bool):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(self.is_deletable)}")
-		if not isinstance(self.is_adm_locked, bool):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(self.is_adm_locked)}")
-		if not isinstance(self.parent_login_name, str):
-			raise ValueError(f"'parent_login_name' of incorrect type. Expected str, got {type(self.parent_login_name)}")
-		if not isinstance(self.allow_data_manipulation, bool):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(self.allow_data_manipulation)}")
-
-	@staticmethod
-	def create_ta(is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> dict:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		return {'name': 'cntl.mgr.create', 'new': _denullify_dict({'is_svc': is_svc_new, 'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'do_copy_roles': do_copy_roles_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> list:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_svc_new=is_svc_new, sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, do_copy_roles_new=do_copy_roles_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(login_name_old: str) -> dict:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, login_name_old: str) -> list:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, gpk_list_old: list = None, kit_status_old: int = None, login_name_old: str = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, email_regexp_old: str = None, fetch_offset_old: int = None, is_deletable_old: bool = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, full_name_regexp_ic_old: str = None, last_name_regexp_ic_old: str = None, sorting_params_list_old: list = None, first_name_regexp_ic_old: str = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str) or isinstance(svc_id_old, ExplicitNull)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str) or isinstance(login_name_old, ExplicitNull)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if email_regexp_old is not None and not (isinstance(email_regexp_old, str)):
-			raise ValueError(f"'email_regexp' of incorrect type. Expected str, got {type(email_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deletable_old is not None and not (isinstance(is_deletable_old, bool)):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(is_deletable_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if full_name_regexp_ic_old is not None and not (isinstance(full_name_regexp_ic_old, str)):
-			raise ValueError(f"'full_name_regexp_ic' of incorrect type. Expected str, got {type(full_name_regexp_ic_old)}")
-		if last_name_regexp_ic_old is not None and not (isinstance(last_name_regexp_ic_old, str)):
-			raise ValueError(f"'last_name_regexp_ic' of incorrect type. Expected str, got {type(last_name_regexp_ic_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if first_name_regexp_ic_old is not None and not (isinstance(first_name_regexp_ic_old, str)):
-			raise ValueError(f"'first_name_regexp_ic' of incorrect type. Expected str, got {type(first_name_regexp_ic_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		return {'name': 'cntl.mgr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'is_svc': is_svc_old, 'sub_id': sub_id_old, 'svc_id': svc_id_old, 'is_self': is_self_old, 'gpk_list': gpk_list_old, 'kit_status': kit_status_old, 'login_name': login_name_old, 'fetch_limit': fetch_limit_old, 'sub_id_list': sub_id_list_old, 'svc_id_list': svc_id_list_old, 'email_regexp': email_regexp_old, 'fetch_offset': fetch_offset_old, 'is_deletable': is_deletable_old, 'is_adm_locked': is_adm_locked_old, 'sub_id_regexp': sub_id_regexp_old, 'svc_id_regexp': svc_id_regexp_old, 'login_name_list': login_name_list_old, 'login_name_regexp': login_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'full_name_regexp_ic': full_name_regexp_ic_old, 'last_name_regexp_ic': last_name_regexp_ic_old, 'sorting_params_list': sorting_params_list_old, 'first_name_regexp_ic': first_name_regexp_ic_old, 'parent_login_name_list': parent_login_name_list_old, 'allow_data_manipulation': allow_data_manipulation_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, gpk_list_old: list = None, kit_status_old: int = None, login_name_old: str = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, email_regexp_old: str = None, fetch_offset_old: int = None, is_deletable_old: bool = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, full_name_regexp_ic_old: str = None, last_name_regexp_ic_old: str = None, sorting_params_list_old: list = None, first_name_regexp_ic_old: str = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str) or isinstance(svc_id_old, ExplicitNull)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str) or isinstance(login_name_old, ExplicitNull)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if email_regexp_old is not None and not (isinstance(email_regexp_old, str)):
-			raise ValueError(f"'email_regexp' of incorrect type. Expected str, got {type(email_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deletable_old is not None and not (isinstance(is_deletable_old, bool)):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(is_deletable_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if full_name_regexp_ic_old is not None and not (isinstance(full_name_regexp_ic_old, str)):
-			raise ValueError(f"'full_name_regexp_ic' of incorrect type. Expected str, got {type(full_name_regexp_ic_old)}")
-		if last_name_regexp_ic_old is not None and not (isinstance(last_name_regexp_ic_old, str)):
-			raise ValueError(f"'last_name_regexp_ic' of incorrect type. Expected str, got {type(last_name_regexp_ic_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if first_name_regexp_ic_old is not None and not (isinstance(first_name_regexp_ic_old, str)):
-			raise ValueError(f"'first_name_regexp_ic' of incorrect type. Expected str, got {type(first_name_regexp_ic_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_sub_old=is_sub_old, is_svc_old=is_svc_old, sub_id_old=sub_id_old, svc_id_old=svc_id_old, is_self_old=is_self_old, gpk_list_old=gpk_list_old, kit_status_old=kit_status_old, login_name_old=login_name_old, fetch_limit_old=fetch_limit_old, sub_id_list_old=sub_id_list_old, svc_id_list_old=svc_id_list_old, email_regexp_old=email_regexp_old, fetch_offset_old=fetch_offset_old, is_deletable_old=is_deletable_old, is_adm_locked_old=is_adm_locked_old, sub_id_regexp_old=sub_id_regexp_old, svc_id_regexp_old=svc_id_regexp_old, login_name_list_old=login_name_list_old, login_name_regexp_old=login_name_regexp_old, filter_params_dict_old=filter_params_dict_old, full_name_regexp_ic_old=full_name_regexp_ic_old, last_name_regexp_ic_old=last_name_regexp_ic_old, sorting_params_list_old=sorting_params_list_old, first_name_regexp_ic_old=first_name_regexp_ic_old, parent_login_name_list_old=parent_login_name_list_old, allow_data_manipulation_old=allow_data_manipulation_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> dict:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.update', 'new': _denullify_dict({'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> list:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Error(APIObject):
-	gpk: str
-	code: int
-	type: int
-	system: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.type, int):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(self.type)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-
-	@staticmethod
-	def create_ta(code_new: int, type_new: int, system_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		return {'name': 'cntl.error.create', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, type_new: int, system_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, type_new=type_new, system_new=system_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int, type_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int, type_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, code_old: int = None, type_old: int = None, system_old: str = None, gpk_list_old: list = None, code_list_old: list = None, type_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if type_old is not None and not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'code': code_old, 'type': type_old, 'system': system_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'type_list': type_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, code_old: int = None, type_old: int = None, system_old: str = None, gpk_list_old: list = None, code_list_old: list = None, type_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if type_old is not None and not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, code_old=code_old, type_old=type_old, system_old=system_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, type_list_old=type_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.update', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, type_new=type_new, system_new=system_new, code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Column(APIObject):
-	gpk: str
-	name: str
-	is_wapi: bool
-	ref_gfk: str
-	ref_name: str
-	data_type: str
-	table_gfk: str
-	table_name: str
-	is_nullable: bool
-	is_required: bool
-	is_deprecated: bool
-	attribute_name: str
-	ref_table_name: str
-	ref_target_gfk: str
-	is_ot_global_ref: bool
-	object_type_fq_name: str
-	pg_attribute_exists: bool
-	use_ref_column_language_attributes: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_wapi, bool):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(self.is_wapi)}")
-		if self.ref_gfk is not None and not isinstance(self.ref_gfk, str):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(self.ref_gfk)}")
-		if self.ref_name is not None and not isinstance(self.ref_name, str):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(self.ref_name)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.table_gfk, str):
-			raise ValueError(f"'table_gfk' of incorrect type. Expected str, got {type(self.table_gfk)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_nullable, bool):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(self.is_nullable)}")
-		if not isinstance(self.is_required, bool):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(self.is_required)}")
-		if not isinstance(self.is_deprecated, bool):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(self.is_deprecated)}")
-		if not isinstance(self.attribute_name, str):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(self.attribute_name)}")
-		if self.ref_table_name is not None and not isinstance(self.ref_table_name, str):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(self.ref_table_name)}")
-		if self.ref_target_gfk is not None and not isinstance(self.ref_target_gfk, str):
-			raise ValueError(f"'ref_target_gfk' of incorrect type. Expected str, got {type(self.ref_target_gfk)}")
-		if not isinstance(self.is_ot_global_ref, bool):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(self.is_ot_global_ref)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.pg_attribute_exists, bool):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(self.pg_attribute_exists)}")
-		if not isinstance(self.use_ref_column_language_attributes, bool):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(self.use_ref_column_language_attributes)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_name_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		return {'name': 'cntl.column.create', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_name': ref_name_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'ref_table_name': ref_table_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_name_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_name_new=ref_name_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, ref_table_name_new=ref_table_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		return {'name': 'cntl.column.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old, 'do_ref_set_null': do_ref_set_null_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old, do_ref_set_null_old=do_ref_set_null_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_wapi_old: bool = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, table_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, table_name_list_old: list = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_wapi_old is not None and not (isinstance(is_wapi_old, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		return {'name': 'cntl.column.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_wapi': is_wapi_old, 'gpk_list': gpk_list_old, 'data_type': data_type_old, 'name_list': name_list_old, 'table_name': table_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_deprecated': is_deprecated_old, 'table_name_list': table_name_list_old, 'is_ot_global_ref': is_ot_global_ref_old, 'filter_params_dict': filter_params_dict_old, 'pg_attribute_exists': pg_attribute_exists_old, 'sorting_params_list': sorting_params_list_old, 'use_ref_column_language_attributes': use_ref_column_language_attributes_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_wapi_old: bool = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, table_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, table_name_list_old: list = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_wapi_old is not None and not (isinstance(is_wapi_old, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_wapi_old=is_wapi_old, gpk_list_old=gpk_list_old, data_type_old=data_type_old, name_list_old=name_list_old, table_name_old=table_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_deprecated_old=is_deprecated_old, table_name_list_old=table_name_list_old, is_ot_global_ref_old=is_ot_global_ref_old, filter_params_dict_old=filter_params_dict_old, pg_attribute_exists_old=pg_attribute_exists_old, sorting_params_list_old=sorting_params_list_old, use_ref_column_language_attributes_old=use_ref_column_language_attributes_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_name_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.column.update', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_name': ref_name_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'ref_table_name': ref_table_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_name_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, ref_table_name_new: Union[str, ExplicitNull] = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if ref_table_name_new is not None and not (isinstance(ref_table_name_new, str) or isinstance(ref_table_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_table_name' of incorrect type. Expected str, got {type(ref_table_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_name_new=ref_name_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, ref_table_name_new=ref_table_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint(APIObject):
-	gpk: str
-	name: str
-	type: str
-	ref_name: str
-	dblvl_name: str
-	table_name: str
-	is_function: bool
-	is_api_level: bool
-	col_name_list: list
-	join_operator: str
-	is_referencing: bool
-	is_join_default: bool
-	dblvl_table_name: str
-	is_referenceable: bool
-	col_data_type_list: list
-	join_operands_exchange: bool
-	join_grants_read_access_from_child: bool
-	join_left_function_format_template: str
-	join_grants_read_access_from_parent: bool
-	join_right_function_format_template: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.ref_name is not None and not isinstance(self.ref_name, str):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(self.ref_name)}")
-		if self.dblvl_name is not None and not isinstance(self.dblvl_name, str):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(self.dblvl_name)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_function, bool):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(self.is_function)}")
-		if not isinstance(self.is_api_level, bool):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(self.is_api_level)}")
-		if not isinstance(self.col_name_list, list):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(self.col_name_list)}")
-		if not isinstance(self.join_operator, str):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(self.join_operator)}")
-		if not isinstance(self.is_referencing, bool):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(self.is_referencing)}")
-		if not isinstance(self.is_join_default, bool):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(self.is_join_default)}")
-		if self.dblvl_table_name is not None and not isinstance(self.dblvl_table_name, str):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(self.dblvl_table_name)}")
-		if not isinstance(self.is_referenceable, bool):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(self.is_referenceable)}")
-		if not isinstance(self.col_data_type_list, list):
-			raise ValueError(f"'col_data_type_list' of incorrect type. Expected list, got {type(self.col_data_type_list)}")
-		if not isinstance(self.join_operands_exchange, bool):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(self.join_operands_exchange)}")
-		if not isinstance(self.join_grants_read_access_from_child, bool):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(self.join_grants_read_access_from_child)}")
-		if not isinstance(self.join_left_function_format_template, str):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(self.join_left_function_format_template)}")
-		if not isinstance(self.join_grants_read_access_from_parent, bool):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(self.join_grants_read_access_from_parent)}")
-		if not isinstance(self.join_right_function_format_template, str):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(self.join_right_function_format_template)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = False, join_grants_read_access_from_child_new: bool = False, join_left_function_format_template_new: str = '%s', join_grants_read_access_from_parent_new: bool = False, join_right_function_format_template_new: str = '%s') -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-
-		return {'name': 'cntl.constraint.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_operands_exchange': join_operands_exchange_new, 'join_grants_read_access_from_child': join_grants_read_access_from_child_new, 'join_left_function_format_template': join_left_function_format_template_new, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_new, 'join_right_function_format_template': join_right_function_format_template_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = False, join_grants_read_access_from_child_new: bool = False, join_left_function_format_template_new: str = '%s', join_grants_read_access_from_parent_new: bool = False, join_right_function_format_template_new: str = '%s') -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_operands_exchange_new=join_operands_exchange_new, join_grants_read_access_from_child_new=join_grants_read_access_from_child_new, join_left_function_format_template_new=join_left_function_format_template_new, join_grants_read_access_from_parent_new=join_grants_read_access_from_parent_new, join_right_function_format_template_new=join_right_function_format_template_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, gpk_list_old: list = None, ref_name_old: str = None, name_list_old: list = None, table_name_old: str = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_referencing_old: bool = None, is_join_default_old: bool = None, table_name_list_old: list = None, is_referenceable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_from_child_old: bool = None, join_grants_read_access_from_parent_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_referencing_old is not None and not (isinstance(is_referencing_old, bool)):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(is_referencing_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_referenceable_old is not None and not (isinstance(is_referenceable_old, bool)):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(is_referenceable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_from_child_old is not None and not (isinstance(join_grants_read_access_from_child_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_old)}")
-		if join_grants_read_access_from_parent_old is not None and not (isinstance(join_grants_read_access_from_parent_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_old)}")
-
-		return {'name': 'cntl.constraint.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'gpk_list': gpk_list_old, 'ref_name': ref_name_old, 'name_list': name_list_old, 'table_name': table_name_old, 'fetch_limit': fetch_limit_old, 'is_function': is_function_old, 'fetch_offset': fetch_offset_old, 'is_api_level': is_api_level_old, 'is_referencing': is_referencing_old, 'is_join_default': is_join_default_old, 'table_name_list': table_name_list_old, 'is_referenceable': is_referenceable_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'join_grants_read_access_from_child': join_grants_read_access_from_child_old, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, gpk_list_old: list = None, ref_name_old: str = None, name_list_old: list = None, table_name_old: str = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_referencing_old: bool = None, is_join_default_old: bool = None, table_name_list_old: list = None, is_referenceable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_from_child_old: bool = None, join_grants_read_access_from_parent_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_referencing_old is not None and not (isinstance(is_referencing_old, bool)):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(is_referencing_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_referenceable_old is not None and not (isinstance(is_referenceable_old, bool)):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(is_referenceable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_from_child_old is not None and not (isinstance(join_grants_read_access_from_child_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_old)}")
-		if join_grants_read_access_from_parent_old is not None and not (isinstance(join_grants_read_access_from_parent_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, gpk_list_old=gpk_list_old, ref_name_old=ref_name_old, name_list_old=name_list_old, table_name_old=table_name_old, fetch_limit_old=fetch_limit_old, is_function_old=is_function_old, fetch_offset_old=fetch_offset_old, is_api_level_old=is_api_level_old, is_referencing_old=is_referencing_old, is_join_default_old=is_join_default_old, table_name_list_old=table_name_list_old, is_referenceable_old=is_referenceable_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, join_grants_read_access_from_child_old=join_grants_read_access_from_child_old, join_grants_read_access_from_parent_old=join_grants_read_access_from_parent_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = None, join_grants_read_access_from_child_new: bool = None, join_left_function_format_template_new: str = None, join_grants_read_access_from_parent_new: bool = None, join_right_function_format_template_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_operands_exchange': join_operands_exchange_new, 'join_grants_read_access_from_child': join_grants_read_access_from_child_new, 'join_left_function_format_template': join_left_function_format_template_new, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_new, 'join_right_function_format_template': join_right_function_format_template_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = None, join_grants_read_access_from_child_new: bool = None, join_left_function_format_template_new: str = None, join_grants_read_access_from_parent_new: bool = None, join_right_function_format_template_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_operands_exchange_new=join_operands_exchange_new, join_grants_read_access_from_child_new=join_grants_read_access_from_child_new, join_left_function_format_template_new=join_left_function_format_template_new, join_grants_read_access_from_parent_new=join_grants_read_access_from_parent_new, join_right_function_format_template_new=join_right_function_format_template_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ErrorType(APIObject):
-	gpk: str
-	code: int
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.error_type.create', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, code_new: int = None, name_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.update', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, code_new: int = None, name_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, name_new=name_new, code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Table(APIObject):
-	gpk: str
-	name: str
-	system: str
-	is_log_dst: bool
-	is_log_src: bool
-	is_lang_dst: bool
-	is_lang_src: bool
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	content_gender: str
-	pg_cls_exists: bool
-	object_type_fq_name: str
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.content_gender, str):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(self.content_gender)}")
-		if not isinstance(self.pg_cls_exists, bool):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(self.pg_cls_exists)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def create_ta(name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		return {'name': 'cntl.table.create', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, do_del_cols_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		return {'name': 'cntl.table.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'do_del_cols': do_del_cols_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, do_del_cols_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, do_del_cols_old=do_del_cols_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, system_old: str = None, gpk_list_old: list = None, name_list_old: list = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		return {'name': 'cntl.table.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'system': system_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'is_log_dst': is_log_dst_old, 'is_log_src': is_log_src_old, 'fetch_limit': fetch_limit_old, 'is_lang_dst': is_lang_dst_old, 'is_lang_src': is_lang_src_old, 'fetch_offset': fetch_offset_old, 'is_otattr_dst': is_otattr_dst_old, 'is_otattr_src': is_otattr_src_old, 'pg_cls_exists': pg_cls_exists_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'do_activate_global_pk2obj': do_activate_global_pk2obj_old, 'object_type_grants_read_access': object_type_grants_read_access_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, system_old: str = None, gpk_list_old: list = None, name_list_old: list = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, system_old=system_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, is_log_dst_old=is_log_dst_old, is_log_src_old=is_log_src_old, fetch_limit_old=fetch_limit_old, is_lang_dst_old=is_lang_dst_old, is_lang_src_old=is_lang_src_old, fetch_offset_old=fetch_offset_old, is_otattr_dst_old=is_otattr_dst_old, is_otattr_src_old=is_otattr_src_old, pg_cls_exists_old=pg_cls_exists_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, do_activate_global_pk2obj_old=do_activate_global_pk2obj_old, object_type_grants_read_access_old=object_type_grants_read_access_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.table.update', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_imp_from_dd_upd_cols': do_imp_from_dd_upd_cols_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new, 'make_generic_object_type_permissions': make_generic_object_type_permissions_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_imp_from_dd_upd_cols_new=do_imp_from_dd_upd_cols_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, make_generic_object_type_permissions_new=make_generic_object_type_permissions_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role(APIObject):
-	gpk: str
-	name: str
-	system: str
-	fq_name: str
-	is_role: bool
-	position: int
-	is_admin_role: bool
-	hierarchy_gfk_list: list
-	is_directly_assigned: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_role, bool):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(self.is_role)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_admin_role, bool):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(self.is_admin_role)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if not isinstance(self.is_directly_assigned, bool):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(self.is_directly_assigned)}")
-
-	@staticmethod
-	def create_ta(fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> dict:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		return {'name': 'cntl.role.create', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> list:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_role_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		return {'name': 'cntl.role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_role': is_role_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'is_admin_role': is_admin_role_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_directly_assigned': is_directly_assigned_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_role_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_role_old=is_role_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, is_admin_role_old=is_admin_role_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_directly_assigned_old=is_directly_assigned_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> dict:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.update', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> list:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2role(APIObject):
-	gpk: str
-	role: str
-	system: str
-	role_fq_name: str
-	mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role, str):
-			raise ValueError(f"'role' of incorrect type. Expected str, got {type(self.role)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-
-	@staticmethod
-	def bulk_update_ta(mgr_login_name_old: str, role_fq_name_list_new: list = None, do_preserve_contained_on_delete_new: bool = None, role_fq_name_list_old: list = None) -> dict:
-		if role_fq_name_list_new is not None and not (isinstance(role_fq_name_list_new, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_new)}")
-		if do_preserve_contained_on_delete_new is not None and not (isinstance(do_preserve_contained_on_delete_new, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_new)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-
-		return {'name': 'cntl.mgr2role.bulk_update', 'new': _denullify_dict({'role_fq_name_list': role_fq_name_list_new, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_new}), 'old': _denullify_dict({'mgr_login_name': mgr_login_name_old, 'role_fq_name_list': role_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, mgr_login_name_old: str, role_fq_name_list_new: list = None, do_preserve_contained_on_delete_new: bool = None, role_fq_name_list_old: list = None) -> list:
-		if role_fq_name_list_new is not None and not (isinstance(role_fq_name_list_new, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_new)}")
-		if do_preserve_contained_on_delete_new is not None and not (isinstance(do_preserve_contained_on_delete_new, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_new)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(role_fq_name_list_new=role_fq_name_list_new, do_preserve_contained_on_delete_new=do_preserve_contained_on_delete_new, mgr_login_name_old=mgr_login_name_old, role_fq_name_list_old=role_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.mgr2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'mgr_login_name': mgr_login_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, mgr_login_name_old=mgr_login_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role2role(APIObject):
-	gpk: str
-	role_fq_name: str
-	role_is_role: bool
-	contained_role_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.role_is_role, bool):
-			raise ValueError(f"'role_is_role' of incorrect type. Expected bool, got {type(self.role_is_role)}")
-		if not isinstance(self.contained_role_fq_name, str):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(self.contained_role_fq_name)}")
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, contained_role_fq_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		return {'name': 'cntl.role2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'contained_role_fq_name': contained_role_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, contained_role_fq_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, contained_role_fq_name_new=contained_role_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.role2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'contained_role_fq_name': contained_role_fq_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, contained_role_fq_name_old=contained_role_fq_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_old: str = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_old: str = None, contained_role_fq_name_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_old is not None and not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_old is not None and not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if contained_role_fq_name_list_old is not None and not (isinstance(contained_role_fq_name_list_old, list)):
-			raise ValueError(f"'contained_role_fq_name_list' of incorrect type. Expected list, got {type(contained_role_fq_name_list_old)}")
-
-		return {'name': 'cntl.role2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'role_fq_name': role_fq_name_old, 'role_fq_name_list': role_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'contained_role_fq_name': contained_role_fq_name_old, 'contained_role_fq_name_list': contained_role_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_old: str = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_old: str = None, contained_role_fq_name_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_old is not None and not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_old is not None and not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if contained_role_fq_name_list_old is not None and not (isinstance(contained_role_fq_name_list_old, list)):
-			raise ValueError(f"'contained_role_fq_name_list' of incorrect type. Expected list, got {type(contained_role_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, role_fq_name_old=role_fq_name_old, role_fq_name_list_old=role_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, contained_role_fq_name_old=contained_role_fq_name_old, contained_role_fq_name_list_old=contained_role_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GlobalPk2obj(APIObject):
-	gpk: str
-	object_dict: dict
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.object_dict, dict):
-			raise ValueError(f"'object_dict' of incorrect type. Expected dict, got {type(self.object_dict)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		return {'name': 'cntl.global_pk2obj.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'do_only_unqpr_object_attrs': do_only_unqpr_object_attrs_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, do_only_unqpr_object_attrs_old=do_only_unqpr_object_attrs_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint2error(APIObject):
-	gpk: str
-	sqlstate: str
-	error_code: int
-	constraint_name: str
-	error_type_code: int
-	constraint_table: str
-	parent_key_not_found: bool
-	constraint_is_api_level: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.sqlstate, str):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(self.sqlstate)}")
-		if not isinstance(self.error_code, int):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(self.error_code)}")
-		if not isinstance(self.constraint_name, str):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(self.constraint_name)}")
-		if not isinstance(self.error_type_code, int):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(self.error_type_code)}")
-		if not isinstance(self.constraint_table, str):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(self.constraint_table)}")
-		if self.parent_key_not_found is not None and not isinstance(self.parent_key_not_found, bool):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(self.parent_key_not_found)}")
-		if not isinstance(self.constraint_is_api_level, bool):
-			raise ValueError(f"'constraint_is_api_level' of incorrect type. Expected bool, got {type(self.constraint_is_api_level)}")
-
-	@staticmethod
-	def create_ta(sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		return {'name': 'cntl.constraint2error.create', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> dict:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> list:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, error_code_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, constraint_name_list_old: list = None, error_type_code_list_old: list = None, parent_key_not_found_old: bool = None, constraint_table_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if error_code_list_old is not None and not (isinstance(error_code_list_old, list)):
-			raise ValueError(f"'error_code_list' of incorrect type. Expected list, got {type(error_code_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if constraint_name_list_old is not None and not (isinstance(constraint_name_list_old, list)):
-			raise ValueError(f"'constraint_name_list' of incorrect type. Expected list, got {type(constraint_name_list_old)}")
-		if error_type_code_list_old is not None and not (isinstance(error_type_code_list_old, list)):
-			raise ValueError(f"'error_type_code_list' of incorrect type. Expected list, got {type(error_type_code_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-		if constraint_table_list_old is not None and not (isinstance(constraint_table_list_old, list)):
-			raise ValueError(f"'constraint_table_list' of incorrect type. Expected list, got {type(constraint_table_list_old)}")
-
-		return {'name': 'cntl.constraint2error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'sqlstate': sqlstate_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'error_code_list': error_code_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'constraint_name_list': constraint_name_list_old, 'error_type_code_list': error_type_code_list_old, 'parent_key_not_found': parent_key_not_found_old, 'constraint_table_list': constraint_table_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, error_code_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, constraint_name_list_old: list = None, error_type_code_list_old: list = None, parent_key_not_found_old: bool = None, constraint_table_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if error_code_list_old is not None and not (isinstance(error_code_list_old, list)):
-			raise ValueError(f"'error_code_list' of incorrect type. Expected list, got {type(error_code_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if constraint_name_list_old is not None and not (isinstance(constraint_name_list_old, list)):
-			raise ValueError(f"'constraint_name_list' of incorrect type. Expected list, got {type(constraint_name_list_old)}")
-		if error_type_code_list_old is not None and not (isinstance(error_type_code_list_old, list)):
-			raise ValueError(f"'error_type_code_list' of incorrect type. Expected list, got {type(error_type_code_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-		if constraint_table_list_old is not None and not (isinstance(constraint_table_list_old, list)):
-			raise ValueError(f"'constraint_table_list' of incorrect type. Expected list, got {type(constraint_table_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, sqlstate_old=sqlstate_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, error_code_list_old=error_code_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, constraint_name_list_old=constraint_name_list_old, error_type_code_list_old=error_type_code_list_old, parent_key_not_found_old=parent_key_not_found_old, constraint_table_list_old=constraint_table_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.update', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataType(APIObject):
-	pk: int
-	gpk: str
-	name: str
-	base_name: str
-	base_nspc: str
-	json_name: str
-	is_primary: bool
-	text_length: int
-	pg_type_name: str
-	pg_type_nspc: str
-	operator_list: list
-	format_literal: str
-	conv_daty_val_attname: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.base_name, str):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(self.base_name)}")
-		if self.base_nspc is not None and not isinstance(self.base_nspc, str):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(self.base_nspc)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.pg_type_name, str):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(self.pg_type_name)}")
-		if not isinstance(self.pg_type_nspc, str):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(self.pg_type_nspc)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-		if not isinstance(self.conv_daty_val_attname, str):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(self.conv_daty_val_attname)}")
-
-	@staticmethod
-	def create_ta(name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		return {'name': 'cntl.data_type.create', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(pk_old: int) -> dict:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, pk_old: int) -> list:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(pk_old: int = None, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old, 'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'json_name': json_name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, pk_old: int = None, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(pk_old=pk_old, gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, json_name_old=json_name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.update', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ColumnKvtab(APIObject):
-	gpk: str
-	key: str
-	position: int
-	table_name: str
-	column_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key, str):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(self.key)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.column_name, str):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(self.column_name)}")
-
-	@staticmethod
-	def create_ta(key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		return {'name': 'cntl.column_kvtab.create', 'new': _denullify_dict({'key': key_new, 'position': position_new, 'table_name': table_name_new, 'column_name': column_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> list:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_new=key_new, position_new=position_new, table_name_new=table_name_new, column_name_new=column_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_old: str, table_name_old: str, column_name_old: str) -> dict:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str) -> list:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, key_old: str = None, gpk_list_old: list = None, key_list_old: list = None, table_name_old: str = None, column_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, table_name_list_old: list = None, column_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_old is not None and not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_list_old is not None and not (isinstance(key_list_old, list)):
-			raise ValueError(f"'key_list' of incorrect type. Expected list, got {type(key_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if column_name_old is not None and not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if column_name_list_old is not None and not (isinstance(column_name_list_old, list)):
-			raise ValueError(f"'column_name_list' of incorrect type. Expected list, got {type(column_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.column_kvtab.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'key': key_old, 'gpk_list': gpk_list_old, 'key_list': key_list_old, 'table_name': table_name_old, 'column_name': column_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'table_name_list': table_name_list_old, 'column_name_list': column_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, key_old: str = None, gpk_list_old: list = None, key_list_old: list = None, table_name_old: str = None, column_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, table_name_list_old: list = None, column_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if key_old is not None and not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_list_old is not None and not (isinstance(key_list_old, list)):
-			raise ValueError(f"'key_list' of incorrect type. Expected list, got {type(key_list_old)}")
-		if table_name_old is not None and not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if column_name_old is not None and not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if column_name_list_old is not None and not (isinstance(column_name_list_old, list)):
-			raise ValueError(f"'column_name_list' of incorrect type. Expected list, got {type(column_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, key_old=key_old, gpk_list_old=gpk_list_old, key_list_old=key_list_old, table_name_old=table_name_old, column_name_old=column_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, table_name_list_old=table_name_list_old, column_name_list_old=column_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.update', 'new': _denullify_dict({'key': key_new, 'position': position_new}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> list:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_new=key_new, position_new=position_new, key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class WapiAuth(APIObject):
-	gpk: str
-	type: str
-	token: str
-	is_own: bool
-	is_expired: bool
-	login_name: str
-	delete_date: str
-	description: str
-	expiration_date: str
-	last_login_date: str
-	last_generate_date: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.token, str):
-			raise ValueError(f"'token' of incorrect type. Expected str, got {type(self.token)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if not isinstance(self.delete_date, str):
-			raise ValueError(f"'delete_date' of incorrect type. Expected str, got {type(self.delete_date)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.expiration_date is not None and not isinstance(self.expiration_date, str):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(self.expiration_date)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if not isinstance(self.last_generate_date, str):
-			raise ValueError(f"'last_generate_date' of incorrect type. Expected str, got {type(self.last_generate_date)}")
-
-	@staticmethod
-	def create_ta(login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		return {'name': 'cntl.wapi_auth.create', 'new': _denullify_dict({'login_name': login_name_new, 'description': description_new, 'expiration_date': expiration_date_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(login_name_new=login_name_new, description_new=description_new, expiration_date_new=expiration_date_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.wapi_auth.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'is_expired': is_expired_old, 'login_name': login_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, is_expired_old=is_expired_old, login_name_old=login_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.update', 'new': _denullify_dict({'description': description_new, 'expiration_date': expiration_date_new, 'do_refresh_token': do_refresh_token_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, expiration_date_new=expiration_date_new, do_refresh_token_new=do_refresh_token_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2group(APIObject):
-	gpk: str
-	is_own: bool
-	group_name: str
-	mgr_login_name: str
-	parent_group_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-		if self.parent_mgr_login_name is not None and not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def bulk_delete_ta(mgr_login_name_old: str) -> dict:
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2group.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, mgr_login_name_old: str) -> list:
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(group_name_list_new: list = None, mgr_login_name_list_new: list = None, group_name_old: str = None, mgr_login_name_old: str = None, group_name_list_old: list = None, mgr_login_name_list_old: list = None) -> dict:
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if mgr_login_name_list_new is not None and not (isinstance(mgr_login_name_list_new, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_new)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-
-		return {'name': 'cntl.mgr2group.bulk_update', 'new': _denullify_dict({'group_name_list': group_name_list_new, 'mgr_login_name_list': mgr_login_name_list_new}), 'old': _denullify_dict({'group_name': group_name_old, 'mgr_login_name': mgr_login_name_old, 'group_name_list': group_name_list_old, 'mgr_login_name_list': mgr_login_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, group_name_list_new: list = None, mgr_login_name_list_new: list = None, group_name_old: str = None, mgr_login_name_old: str = None, group_name_list_old: list = None, mgr_login_name_list_old: list = None) -> list:
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if mgr_login_name_list_new is not None and not (isinstance(mgr_login_name_list_new, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_new)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(group_name_list_new=group_name_list_new, mgr_login_name_list_new=mgr_login_name_list_new, group_name_old=group_name_old, mgr_login_name_old=mgr_login_name_old, group_name_list_old=group_name_list_old, mgr_login_name_list_old=mgr_login_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(group_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2group.create', 'new': _denullify_dict({'group_name': group_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, group_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(group_name_new=group_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(group_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'group_name': group_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, group_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(group_name_old=group_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Group(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_sub: bool
-	sub_id: str
-	is_admin: bool
-	description: str
-	do_idm_sync: bool
-	parent_name: str
-	ou_short_name: str
-	idm_description: str
-	idm_sync_last_ts: str
-	idm_sync_is_active: bool
-	idm_sync_last_state: str
-	idm_sync_max_mgr_count: int
-	idm_sync_last_successful_ts: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if not isinstance(self.is_admin, bool):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(self.is_admin)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.do_idm_sync, bool):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(self.do_idm_sync)}")
-		if not isinstance(self.parent_name, str):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(self.parent_name)}")
-		if self.ou_short_name is not None and not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if self.idm_description is not None and not isinstance(self.idm_description, str):
-			raise ValueError(f"'idm_description' of incorrect type. Expected str, got {type(self.idm_description)}")
-		if self.idm_sync_last_ts is not None and not isinstance(self.idm_sync_last_ts, str):
-			raise ValueError(f"'idm_sync_last_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_ts)}")
-		if not isinstance(self.idm_sync_is_active, bool):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(self.idm_sync_is_active)}")
-		if self.idm_sync_last_state is not None and not isinstance(self.idm_sync_last_state, str):
-			raise ValueError(f"'idm_sync_last_state' of incorrect type. Expected str, got {type(self.idm_sync_last_state)}")
-		if not isinstance(self.idm_sync_max_mgr_count, int):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(self.idm_sync_max_mgr_count)}")
-		if self.idm_sync_last_successful_ts is not None and not isinstance(self.idm_sync_last_successful_ts, str):
-			raise ValueError(f"'idm_sync_last_successful_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_successful_ts)}")
-
-	@staticmethod
-	def create_ta(name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-
-		return {'name': 'cntl.group.create', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'parent_name': parent_name_new, 'ou_short_name': ou_short_name_new, 'do_copy_assignments': do_copy_assignments_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, parent_name_new=parent_name_new, ou_short_name_new=ou_short_name_new, do_copy_assignments_new=do_copy_assignments_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, gpk_list_old: list = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str) or isinstance(name_old, ExplicitNull)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'sub_id': sub_id_old, 'gpk_list': gpk_list_old, 'is_admin': is_admin_old, 'name_list': name_list_old, 'do_idm_sync': do_idm_sync_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'sub_id_list': sub_id_list_old, 'fetch_offset': fetch_offset_old, 'ou_short_name': ou_short_name_old, 'sub_id_regexp': sub_id_regexp_old, 'parent_name_list': parent_name_list_old, 'filter_params_dict': filter_params_dict_old, 'idm_sync_is_active': idm_sync_is_active_old, 'is_admin_or_is_own': is_admin_or_is_own_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, gpk_list_old: list = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str) or isinstance(name_old, ExplicitNull)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, is_own_old=is_own_old, is_sub_old=is_sub_old, sub_id_old=sub_id_old, gpk_list_old=gpk_list_old, is_admin_old=is_admin_old, name_list_old=name_list_old, do_idm_sync_old=do_idm_sync_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, sub_id_list_old=sub_id_list_old, fetch_offset_old=fetch_offset_old, ou_short_name_old=ou_short_name_old, sub_id_regexp_old=sub_id_regexp_old, parent_name_list_old=parent_name_list_old, filter_params_dict_old=filter_params_dict_old, idm_sync_is_active_old=idm_sync_is_active_old, is_admin_or_is_own_old=is_admin_or_is_own_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.update', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'ou_short_name': ou_short_name_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, ou_short_name_new=ou_short_name_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2ou(APIObject):
-	gpk: str
-	is_own: bool
-	is_sub: bool
-	ou_short_name: str
-	mgr_login_name: str
-	parent_ou_short_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_ou_short_name, str):
-			raise ValueError(f"'parent_ou_short_name' of incorrect type. Expected str, got {type(self.parent_ou_short_name)}")
-		if not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def create_ta(ou_short_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2ou.create', 'new': _denullify_dict({'ou_short_name': ou_short_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ou_short_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ou_short_name_new=ou_short_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_sub': is_sub_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_sub_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_sub_old=is_sub_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.update', 'new': _denullify_dict({'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ou_short_name_new=ou_short_name_new, ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrDef(APIObject):
-	gpk: str
-	key_word: str
-	data_type: str
-	object_type_fq_name: str
-	ins_trg_func_fq_name: str
-	upd_trg_func_fq_name: str
-	ref_object_type_fq_name: str
-	object_type_api_ref_constraint_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if self.ins_trg_func_fq_name is not None and not isinstance(self.ins_trg_func_fq_name, str):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(self.ins_trg_func_fq_name)}")
-		if self.upd_trg_func_fq_name is not None and not isinstance(self.upd_trg_func_fq_name, str):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(self.upd_trg_func_fq_name)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-		if not isinstance(self.object_type_api_ref_constraint_name, str):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(self.object_type_api_ref_constraint_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_api_ref_constraint_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-
-		return {'name': 'cntl.ot_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_api_ref_constraint_name': object_type_api_ref_constraint_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_api_ref_constraint_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_api_ref_constraint_name_new=object_type_api_ref_constraint_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, key_word_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		return {'name': 'cntl.ot_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'key_word': key_word_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'key_word_list': key_word_list_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old, 'object_type_fq_name_list': object_type_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, key_word_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, key_word_old=key_word_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, key_word_list_old=key_word_list_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old, object_type_fq_name_list_old=object_type_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_api_ref_constraint_name_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_api_ref_constraint_name_new is not None and not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_api_ref_constraint_name': object_type_api_ref_constraint_name_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_api_ref_constraint_name_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_api_ref_constraint_name_new is not None and not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_api_ref_constraint_name_new=object_type_api_ref_constraint_name_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrKey(APIObject):
-	gpk: str
-	set_mode: int
-	display_mode: int
-	default_value: str
-	val_is_unique: bool
-	ref_object_gfk: str
-	val_is_nullable: bool
-	display_position: int
-	permission_fq_name: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-	ref_object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.set_mode, int):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(self.set_mode)}")
-		if not isinstance(self.display_mode, int):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(self.display_mode)}")
-		if self.default_value is not None and not isinstance(self.default_value, str):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(self.default_value)}")
-		if not isinstance(self.val_is_unique, bool):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(self.val_is_unique)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.val_is_nullable, bool):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(self.val_is_nullable)}")
-		if not isinstance(self.display_position, int):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(self.display_position)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		return {'name': 'cntl.ot_attr_key.create', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> dict:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> list:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ref_object_gfk_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, ref_object_gfk_list_old: list = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None, ot_attr_def_key_word_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if ref_object_gfk_list_old is not None and not (isinstance(ref_object_gfk_list_old, list)):
-			raise ValueError(f"'ref_object_gfk_list' of incorrect type. Expected list, got {type(ref_object_gfk_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_attr_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ref_object_gfk': ref_object_gfk_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'ref_object_gfk_list': ref_object_gfk_list_old, 'sorting_params_list': sorting_params_list_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old, 'object_type_fq_name_list': object_type_fq_name_list_old, 'ot_attr_def_key_word_list': ot_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ref_object_gfk_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, ref_object_gfk_list_old: list = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None, ot_attr_def_key_word_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if ref_object_gfk_list_old is not None and not (isinstance(ref_object_gfk_list_old, list)):
-			raise ValueError(f"'ref_object_gfk_list' of incorrect type. Expected list, got {type(ref_object_gfk_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ref_object_gfk_old=ref_object_gfk_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, ref_object_gfk_list_old=ref_object_gfk_list_old, sorting_params_list_old=sorting_params_list_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old, object_type_fq_name_list_old=object_type_fq_name_list_old, ot_attr_def_key_word_list_old=ot_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.update', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrVal(APIObject):
-	value: str
-	data_type: str
-	object_gfk: str
-	ref_object_gfk: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = 'eq', filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'value_range': value_range_old, 'fetch_offset': fetch_offset_old, 'value_operator': value_operator_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old, 'ot_attr_def_key_word_list': ot_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = 'eq', filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, value_range_old=value_range_old, fetch_offset_old=fetch_offset_old, value_operator_old=value_operator_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old, ot_attr_def_key_word_list_old=ot_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_new: Union[str, ExplicitNull], object_gfk_old: str, ot_attr_def_key_word_old: str) -> dict:
-		if not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_val.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'object_gfk': object_gfk_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_new: Union[str, ExplicitNull], object_gfk_old: str, ot_attr_def_key_word_old: str) -> list:
-		if not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, object_gfk_old=object_gfk_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Replication(APIObject):
-	gpk: str
-	name: str
-	oper_mode: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.oper_mode, str):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(self.oper_mode)}")
-
-	@staticmethod
-	def create_ta(name_new: str, oper_mode_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		return {'name': 'cntl.replication.create', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, oper_mode_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, oper_mode_new=oper_mode_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, oper_mode_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, oper_mode_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.replication.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'oper_mode': oper_mode_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, oper_mode_old=oper_mode_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.update', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, oper_mode_new=oper_mode_new, name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ReplicationPub2sub(APIObject):
-	gpk: str
-	do_init: bool
-	publisher_fqdn: str
-	subscriber_fqdn: str
-	replication_name: str
-	replication_oper_mode: str
-	replication_slot_suffix: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.do_init, bool):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(self.do_init)}")
-		if not isinstance(self.publisher_fqdn, str):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(self.publisher_fqdn)}")
-		if not isinstance(self.subscriber_fqdn, str):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(self.subscriber_fqdn)}")
-		if not isinstance(self.replication_name, str):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(self.replication_name)}")
-		if not isinstance(self.replication_oper_mode, str):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(self.replication_oper_mode)}")
-		if not isinstance(self.replication_slot_suffix, str):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(self.replication_slot_suffix)}")
-
-	@staticmethod
-	def create_ta(publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		return {'name': 'cntl.replication_pub2sub.create', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, do_init_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, publisher_fqdn_old: str = None, replication_name_old: str = None, filter_params_dict_old: dict = None, publisher_fqdn_list_old: list = None, sorting_params_list_old: list = None, subscriber_fqdn_list_old: list = None, replication_name_list_old: list = None, replication_oper_mode_old: str = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if publisher_fqdn_old is not None and not (isinstance(publisher_fqdn_old, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_old)}")
-		if replication_name_old is not None and not (isinstance(replication_name_old, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if publisher_fqdn_list_old is not None and not (isinstance(publisher_fqdn_list_old, list)):
-			raise ValueError(f"'publisher_fqdn_list' of incorrect type. Expected list, got {type(publisher_fqdn_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if subscriber_fqdn_list_old is not None and not (isinstance(subscriber_fqdn_list_old, list)):
-			raise ValueError(f"'subscriber_fqdn_list' of incorrect type. Expected list, got {type(subscriber_fqdn_list_old)}")
-		if replication_name_list_old is not None and not (isinstance(replication_name_list_old, list)):
-			raise ValueError(f"'replication_name_list' of incorrect type. Expected list, got {type(replication_name_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'do_init': do_init_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'publisher_fqdn': publisher_fqdn_old, 'replication_name': replication_name_old, 'filter_params_dict': filter_params_dict_old, 'publisher_fqdn_list': publisher_fqdn_list_old, 'sorting_params_list': sorting_params_list_old, 'subscriber_fqdn_list': subscriber_fqdn_list_old, 'replication_name_list': replication_name_list_old, 'replication_oper_mode': replication_oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, do_init_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, publisher_fqdn_old: str = None, replication_name_old: str = None, filter_params_dict_old: dict = None, publisher_fqdn_list_old: list = None, sorting_params_list_old: list = None, subscriber_fqdn_list_old: list = None, replication_name_list_old: list = None, replication_oper_mode_old: str = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if publisher_fqdn_old is not None and not (isinstance(publisher_fqdn_old, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_old)}")
-		if replication_name_old is not None and not (isinstance(replication_name_old, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if publisher_fqdn_list_old is not None and not (isinstance(publisher_fqdn_list_old, list)):
-			raise ValueError(f"'publisher_fqdn_list' of incorrect type. Expected list, got {type(publisher_fqdn_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if subscriber_fqdn_list_old is not None and not (isinstance(subscriber_fqdn_list_old, list)):
-			raise ValueError(f"'subscriber_fqdn_list' of incorrect type. Expected list, got {type(subscriber_fqdn_list_old)}")
-		if replication_name_list_old is not None and not (isinstance(replication_name_list_old, list)):
-			raise ValueError(f"'replication_name_list' of incorrect type. Expected list, got {type(replication_name_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, do_init_old=do_init_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, publisher_fqdn_old=publisher_fqdn_old, replication_name_old=replication_name_old, filter_params_dict_old=filter_params_dict_old, publisher_fqdn_list_old=publisher_fqdn_list_old, sorting_params_list_old=sorting_params_list_old, subscriber_fqdn_list_old=subscriber_fqdn_list_old, replication_name_list_old=replication_name_list_old, replication_oper_mode_old=replication_oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.update', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'do_init_is_recursive': do_init_is_recursive_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, do_init_is_recursive_new=do_init_is_recursive_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	gpk: str
-	name: str
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'data_type': data_type_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, data_type_old=data_type_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	gpk: str
-	tag: str
-	name: str
-	is_active: bool
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def create_ta(tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> dict:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		return {'name': 'cntl.language.create', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> list:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(tag_old: str) -> dict:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, tag_old: str) -> list:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, tag_old: str = None, gpk_list_old: list = None, tag_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if tag_old is not None and not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'tag': tag_old, 'gpk_list': gpk_list_old, 'tag_list': tag_list_old, 'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, tag_old: str = None, gpk_list_old: list = None, tag_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if tag_old is not None and not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, tag_old=tag_old, gpk_list_old=gpk_list_old, tag_list_old=tag_list_old, is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> dict:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.update', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> list:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrDef(APIObject):
-	gpk: str
-	key_word: str
-	is_static: bool
-	is_primary: bool
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.is_static, bool):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(self.is_static)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'is_static': is_static_new, 'is_primary': is_primary_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, is_static_new=is_static_new, is_primary_new=is_primary_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, key_word_old: str = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, object_type_fq_name_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'key_word': key_word_old, 'is_static': is_static_old, 'is_primary': is_primary_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'key_word_list': key_word_list_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'object_type_fq_name_list': object_type_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, key_word_old: str = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, object_type_fq_name_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_word_old is not None and not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, key_word_old=key_word_old, is_static_old=is_static_old, is_primary_old=is_primary_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, key_word_list_old=key_word_list_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, object_type_fq_name_list_old=object_type_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrVal(APIObject):
-	value: str
-	object_gfk: str
-	language_tag: str
-	object_type_fq_name: str
-	ot_lang_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_lang_attr_def_key_word, str):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_lang_attr_def_key_word)}")
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_tag': language_tag_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'use_transaction_language': use_transaction_language_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old, 'ot_lang_attr_def_key_word_list': ot_lang_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_tag_old=language_tag_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, use_transaction_language_old=use_transaction_language_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old, ot_lang_attr_def_key_word_list_old=ot_lang_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'object_gfk': object_gfk_old, 'language_tag': language_tag_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, object_gfk_old=object_gfk_old, language_tag_old=language_tag_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/dhcpcfg.py b/4.1/golang/dhcpcfg.py
deleted file mode 100644
index c10bc93..0000000
--- a/4.1/golang/dhcpcfg.py
+++ /dev/null
@@ -1,301 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Operator(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dhcpcfg.operator.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpcfg.operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Dt2operator2dt(APIObject):
-	gpk: str
-	operator: str
-	left_data_type: str
-	right_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, left_data_type_new: str, right_data_type_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.create', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, left_data_type_new: str, right_data_type_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str) -> dict:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str) -> list:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, operator_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, operator_list_old: list = None, left_data_type_old: str = None, right_data_type_old: str = None, filter_params_dict_old: dict = None, left_data_type_list_old: list = None, sorting_params_list_old: list = None, right_data_type_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if operator_old is not None and not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if operator_list_old is not None and not (isinstance(operator_list_old, list)):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(operator_list_old)}")
-		if left_data_type_old is not None and not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if right_data_type_old is not None and not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if left_data_type_list_old is not None and not (isinstance(left_data_type_list_old, list)):
-			raise ValueError(f"'left_data_type_list' of incorrect type. Expected list, got {type(left_data_type_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if right_data_type_list_old is not None and not (isinstance(right_data_type_list_old, list)):
-			raise ValueError(f"'right_data_type_list' of incorrect type. Expected list, got {type(right_data_type_list_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'operator': operator_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'operator_list': operator_list_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old, 'filter_params_dict': filter_params_dict_old, 'left_data_type_list': left_data_type_list_old, 'sorting_params_list': sorting_params_list_old, 'right_data_type_list': right_data_type_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, operator_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, operator_list_old: list = None, left_data_type_old: str = None, right_data_type_old: str = None, filter_params_dict_old: dict = None, left_data_type_list_old: list = None, sorting_params_list_old: list = None, right_data_type_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if operator_old is not None and not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if operator_list_old is not None and not (isinstance(operator_list_old, list)):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(operator_list_old)}")
-		if left_data_type_old is not None and not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if right_data_type_old is not None and not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if left_data_type_list_old is not None and not (isinstance(left_data_type_list_old, list)):
-			raise ValueError(f"'left_data_type_list' of incorrect type. Expected list, got {type(left_data_type_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if right_data_type_list_old is not None and not (isinstance(right_data_type_list_old, list)):
-			raise ValueError(f"'right_data_type_list' of incorrect type. Expected list, got {type(right_data_type_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, operator_old=operator_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, operator_list_old=operator_list_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old, filter_params_dict_old=filter_params_dict_old, left_data_type_list_old=left_data_type_list_old, sorting_params_list_old=sorting_params_list_old, right_data_type_list_old=right_data_type_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.update', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/dhcpv4.py b/4.1/golang/dhcpv4.py
deleted file mode 100644
index 52ff6b0..0000000
--- a/4.1/golang/dhcpv4.py
+++ /dev/null
@@ -1,1556 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GlobalOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	name: str
-	data_type: str
-	reference: str
-	description: str
-	is_generated: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if self.reference is not None and not isinstance(self.reference, str):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(self.reference)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_generated, bool):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(self.is_generated)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		return {'name': 'dhcpv4.global_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, code_old: int = None, gpk_list_old: list = None, code_list_old: list = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.global_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'code': code_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_generated': is_generated_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, code_old: int = None, gpk_list_old: list = None, code_list_old: list = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if code_old is not None and not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, code_old=code_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_generated_old=is_generated_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Lease(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	is_expired: bool
-	is_offered: bool
-	ts_expires: str
-	fqdn_is_dhcp: bool
-	ip_addr_value: str
-	ip_subnet_cidr: str
-	is_static_addr: bool
-	is_static_fqdn: bool
-	leasetime_days: int
-	mac_addr_value: str
-	ip_addr_is_dhcp: bool
-	leasetime_hours: int
-	ts_last_changed: str
-	adm_status_descr: str
-	client_identifier: str
-	leasetime_minutes: int
-	oper_status_descr: str
-	client_options_dict: dict
-	server_options_dict: dict
-	always_match_by_mac_addr: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.fqdn_value is not None and not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.is_offered, bool):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(self.is_offered)}")
-		if not isinstance(self.ts_expires, str):
-			raise ValueError(f"'ts_expires' of incorrect type. Expected str, got {type(self.ts_expires)}")
-		if not isinstance(self.fqdn_is_dhcp, bool):
-			raise ValueError(f"'fqdn_is_dhcp' of incorrect type. Expected bool, got {type(self.fqdn_is_dhcp)}")
-		if self.ip_addr_value is not None and not isinstance(self.ip_addr_value, str):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(self.ip_addr_value)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-		if not isinstance(self.is_static_addr, bool):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(self.is_static_addr)}")
-		if not isinstance(self.is_static_fqdn, bool):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(self.is_static_fqdn)}")
-		if self.leasetime_days is not None and not isinstance(self.leasetime_days, int):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(self.leasetime_days)}")
-		if self.mac_addr_value is not None and not isinstance(self.mac_addr_value, str):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(self.mac_addr_value)}")
-		if not isinstance(self.ip_addr_is_dhcp, bool):
-			raise ValueError(f"'ip_addr_is_dhcp' of incorrect type. Expected bool, got {type(self.ip_addr_is_dhcp)}")
-		if self.leasetime_hours is not None and not isinstance(self.leasetime_hours, int):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(self.leasetime_hours)}")
-		if not isinstance(self.ts_last_changed, str):
-			raise ValueError(f"'ts_last_changed' of incorrect type. Expected str, got {type(self.ts_last_changed)}")
-		if self.adm_status_descr is not None and not isinstance(self.adm_status_descr, str):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(self.adm_status_descr)}")
-		if self.client_identifier is not None and not isinstance(self.client_identifier, str):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(self.client_identifier)}")
-		if self.leasetime_minutes is not None and not isinstance(self.leasetime_minutes, int):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(self.leasetime_minutes)}")
-		if self.oper_status_descr is not None and not isinstance(self.oper_status_descr, str):
-			raise ValueError(f"'oper_status_descr' of incorrect type. Expected str, got {type(self.oper_status_descr)}")
-		if self.client_options_dict is not None and not isinstance(self.client_options_dict, dict):
-			raise ValueError(f"'client_options_dict' of incorrect type. Expected dict, got {type(self.client_options_dict)}")
-		if self.server_options_dict is not None and not isinstance(self.server_options_dict, dict):
-			raise ValueError(f"'server_options_dict' of incorrect type. Expected dict, got {type(self.server_options_dict)}")
-		if not isinstance(self.always_match_by_mac_addr, bool):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(self.always_match_by_mac_addr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-
-		return {'name': 'dhcpv4.lease.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old, 'is_static_addr': is_static_addr_old, 'is_static_fqdn': is_static_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old, is_static_addr_old=is_static_addr_old, is_static_fqdn_old=is_static_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.lease.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> dict:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		return {'name': 'dhcpv4.lease.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'leasetime_days': leasetime_days_new, 'mac_addr_value': mac_addr_value_new, 'leasetime_hours': leasetime_hours_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'leasetime_minutes': leasetime_minutes_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> list:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, leasetime_days_new=leasetime_days_new, mac_addr_value_new=mac_addr_value_new, leasetime_hours_new=leasetime_hours_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, leasetime_minutes_new=leasetime_minutes_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'is_expired': is_expired_old, 'is_offered': is_offered_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'is_static_addr': is_static_addr_old, 'is_static_fqdn': is_static_fqdn_old, 'mac_addr_value': mac_addr_value_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, is_expired_old=is_expired_old, is_offered_old=is_offered_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, is_static_addr_old=is_static_addr_old, is_static_fqdn_old=is_static_fqdn_old, mac_addr_value_old=mac_addr_value_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> dict:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.update', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'leasetime_days': leasetime_days_new, 'mac_addr_value': mac_addr_value_new, 'leasetime_hours': leasetime_hours_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'leasetime_minutes': leasetime_minutes_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, leasetime_days_new: Union[int, ExplicitNull] = None, mac_addr_value_new: Union[str, ExplicitNull] = None, leasetime_hours_new: Union[int, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, leasetime_minutes_new: Union[int, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> list:
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if leasetime_days_new is not None and not (isinstance(leasetime_days_new, int) or isinstance(leasetime_days_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_days' of incorrect type. Expected int, got {type(leasetime_days_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if leasetime_hours_new is not None and not (isinstance(leasetime_hours_new, int) or isinstance(leasetime_hours_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_hours' of incorrect type. Expected int, got {type(leasetime_hours_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if leasetime_minutes_new is not None and not (isinstance(leasetime_minutes_new, int) or isinstance(leasetime_minutes_new, ExplicitNull)):
-			raise ValueError(f"'leasetime_minutes' of incorrect type. Expected int, got {type(leasetime_minutes_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, leasetime_days_new=leasetime_days_new, mac_addr_value_new=mac_addr_value_new, leasetime_hours_new=leasetime_hours_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, leasetime_minutes_new=leasetime_minutes_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	priority: int
-	code_data_type: str
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.subnet_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, priority_list_old: list = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'priority_list': priority_list_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'filter_params_dict': filter_params_dict_old, 'ip_subnet_cidr_list': ip_subnet_cidr_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, priority_list_old: list = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, priority_list_old=priority_list_old, ip_subnet_cidr_old=ip_subnet_cidr_old, filter_params_dict_old=filter_params_dict_old, ip_subnet_cidr_list_old=ip_subnet_cidr_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def bulk_delete_ta(ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.og.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> dict:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		return {'name': 'dhcpv4.og.bulk_update', 'new': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'ip_subnet_cidr': ip_subnet_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, ip_subnet_cidr_new: str, ip_subnet_cidr_old: str) -> list:
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(ip_subnet_cidr_new=ip_subnet_cidr_new, ip_subnet_cidr_old=ip_subnet_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(name_new: str, ip_subnet_cidr_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.og.create', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, ip_subnet_cidr_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'filter_params_dict': filter_params_dict_old, 'ip_subnet_cidr_list': ip_subnet_cidr_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, filter_params_dict_old=filter_params_dict_old, ip_subnet_cidr_list_old=ip_subnet_cidr_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.update', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	code_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		return {'name': 'dhcpv4.group_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'og_gfk_list': og_gfk_list_old, 'fetch_offset': fetch_offset_old, 'priority_list': priority_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, og_gfk_list_old=og_gfk_list_old, fetch_offset_old=fetch_offset_old, priority_list_old=priority_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	sn_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.sn_opt_gfk, str):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(self.sn_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'sn_opt_gfk': sn_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, sn_opt_gfk_old=sn_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	og_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.og_opt_gfk, str):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(self.og_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.group_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'og_opt_gfk': og_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, og_opt_gfk_old=og_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og2lease(APIObject):
-	gpk: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	lease_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.lease_gfk, str):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(self.lease_gfk)}")
-
-	@staticmethod
-	def create_ta(og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> dict:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		return {'name': 'dhcpv4.og2lease.create', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> list:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, lease_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if lease_gfk_list_old is not None and not (isinstance(lease_gfk_list_old, list)):
-			raise ValueError(f"'lease_gfk_list' of incorrect type. Expected list, got {type(lease_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og2lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'og_gfk_list': og_gfk_list_old, 'fetch_offset': fetch_offset_old, 'lease_gfk_list': lease_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, lease_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if lease_gfk_list_old is not None and not (isinstance(lease_gfk_list_old, list)):
-			raise ValueError(f"'lease_gfk_list' of incorrect type. Expected list, got {type(lease_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, og_gfk_list_old=og_gfk_list_old, fetch_offset_old=fetch_offset_old, lease_gfk_list_old=lease_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> dict:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.update', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> list:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/dns.py b/4.1/golang/dns.py
deleted file mode 100644
index b230440..0000000
--- a/4.1/golang/dns.py
+++ /dev/null
@@ -1,1506 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Zone(APIObject):
-	gpk: str
-	fqdn: str
-	is_own: bool
-	is_apex: bool
-	nsec3_salt: str
-	description: str
-	ns_set_name: str
-	nsec3_itcount: int
-	dnssec_do_sign: bool
-	soa_data_retry: int
-	nsec3_hash_algo: int
-	soa_data_expire: int
-	soa_data_serial: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	dnssec_do_enforce: bool
-	dflt_ttl_rrt_dbext: int
-	dflt_ttl_rrt_dbint: int
-	soa_data_hostmaster: str
-	dnssec_ksk_rrs_are_published: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_apex, bool):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(self.is_apex)}")
-		if self.nsec3_salt is not None and not isinstance(self.nsec3_salt, str):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(self.nsec3_salt)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.ns_set_name is not None and not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.nsec3_itcount, int):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(self.nsec3_itcount)}")
-		if not isinstance(self.dnssec_do_sign, bool):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(self.dnssec_do_sign)}")
-		if self.soa_data_retry is not None and not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.nsec3_hash_algo, int):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(self.nsec3_hash_algo)}")
-		if self.soa_data_expire is not None and not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_serial, int):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(self.soa_data_serial)}")
-		if self.soa_data_minimum is not None and not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if self.soa_data_refresh is not None and not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.dnssec_do_enforce, bool):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(self.dnssec_do_enforce)}")
-		if not isinstance(self.dflt_ttl_rrt_dbext, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbext)}")
-		if not isinstance(self.dflt_ttl_rrt_dbint, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbint)}")
-		if self.soa_data_hostmaster is not None and not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.dnssec_ksk_rrs_are_published, bool):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(self.dnssec_ksk_rrs_are_published)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		return {'name': 'dns.zone.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fqdn_old: str = None, is_own_old: bool = None, is_apex_old: bool = None, gpk_list_old: list = None, sub_fqdn_old: str = None, fqdn_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sub_fqdn_old is not None and not (isinstance(sub_fqdn_old, str)):
-			raise ValueError(f"'sub_fqdn' of incorrect type. Expected str, got {type(sub_fqdn_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.zone.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fqdn': fqdn_old, 'is_own': is_own_old, 'is_apex': is_apex_old, 'gpk_list': gpk_list_old, 'sub_fqdn': sub_fqdn_old, 'fqdn_list': fqdn_list_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'dnssec_do_enforce': dnssec_do_enforce_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fqdn_old: str = None, is_own_old: bool = None, is_apex_old: bool = None, gpk_list_old: list = None, sub_fqdn_old: str = None, fqdn_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sub_fqdn_old is not None and not (isinstance(sub_fqdn_old, str)):
-			raise ValueError(f"'sub_fqdn' of incorrect type. Expected str, got {type(sub_fqdn_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fqdn_old=fqdn_old, is_own_old=is_own_old, is_apex_old=is_apex_old, gpk_list_old=gpk_list_old, sub_fqdn_old=sub_fqdn_old, fqdn_list_old=fqdn_list_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, dnssec_do_enforce_old=dnssec_do_enforce_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> dict:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.update', 'new': _denullify_dict({'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'reset_rr_ttls': reset_rr_ttls_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_serial': soa_data_serial_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> list:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, reset_rr_ttls_new=reset_rr_ttls_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_serial_new=soa_data_serial_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn(APIObject):
-	gpk: str
-	type: str
-	zone: str
-	label: str
-	value: str
-	has_rr: bool
-	is_own: bool
-	parent_gfk: str
-	tree_level: int
-	value_idna: str
-	description: str
-	parent_value: str
-	type_is_dhcp: bool
-	type_is_host: bool
-	type_rad_type: int
-	sub_fqdn_count: int
-	type_is_wildcard: bool
-	hierarchy_gfk_list: list
-	type_is_nonterminal: bool
-	is_empty_nonterminal: bool
-	rr_chain_target_is_own: bool
-	rr_chain_target_subnet_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if self.label is not None and not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.has_rr, bool):
-			raise ValueError(f"'has_rr' of incorrect type. Expected bool, got {type(self.has_rr)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.value_idna, str):
-			raise ValueError(f"'value_idna' of incorrect type. Expected str, got {type(self.value_idna)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.parent_value is not None and not isinstance(self.parent_value, str):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(self.parent_value)}")
-		if not isinstance(self.type_is_dhcp, bool):
-			raise ValueError(f"'type_is_dhcp' of incorrect type. Expected bool, got {type(self.type_is_dhcp)}")
-		if not isinstance(self.type_is_host, bool):
-			raise ValueError(f"'type_is_host' of incorrect type. Expected bool, got {type(self.type_is_host)}")
-		if not isinstance(self.type_rad_type, int):
-			raise ValueError(f"'type_rad_type' of incorrect type. Expected int, got {type(self.type_rad_type)}")
-		if not isinstance(self.sub_fqdn_count, int):
-			raise ValueError(f"'sub_fqdn_count' of incorrect type. Expected int, got {type(self.sub_fqdn_count)}")
-		if not isinstance(self.type_is_wildcard, bool):
-			raise ValueError(f"'type_is_wildcard' of incorrect type. Expected bool, got {type(self.type_is_wildcard)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if not isinstance(self.type_is_nonterminal, bool):
-			raise ValueError(f"'type_is_nonterminal' of incorrect type. Expected bool, got {type(self.type_is_nonterminal)}")
-		if not isinstance(self.is_empty_nonterminal, bool):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(self.is_empty_nonterminal)}")
-		if not isinstance(self.rr_chain_target_is_own, bool):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(self.rr_chain_target_is_own)}")
-		if self.rr_chain_target_subnet_gfk_list is not None and not isinstance(self.rr_chain_target_subnet_gfk_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_gfk_list)}")
-
-	@staticmethod
-	def create_ta(type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dns.fqdn.create', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, value_new=value_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.fqdn.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old, try_del_parent_old=try_del_parent_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, zone_old: str = None, value_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		return {'name': 'dns.fqdn.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'zone': zone_old, 'value': value_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'label_regexp': label_regexp_old, 'parent_value': parent_value_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_empty_nonterminal': is_empty_nonterminal_old, 'rr_chain_target_is_own': rr_chain_target_is_own_old, 'rr_chain_target_subnet_gfk_list': rr_chain_target_subnet_gfk_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, zone_old: str = None, value_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, zone_old=zone_old, value_old=value_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, label_list_old=label_list_old, tree_level_old=tree_level_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, label_regexp_old=label_regexp_old, parent_value_old=parent_value_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_empty_nonterminal_old=is_empty_nonterminal_old, rr_chain_target_is_own_old=rr_chain_target_is_own_old, rr_chain_target_subnet_gfk_list_old=rr_chain_target_subnet_gfk_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		return {'name': 'dns.fqdn.update', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, value_new=value_new, description_new=description_new, value_old=value_old, try_del_parent_old=try_del_parent_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpAddr(APIObject):
-	gpk: str
-	cidr: str
-	type: str
-	value: str
-	is_own: bool
-	is_dhcp: bool
-	is_reserved: bool
-	is_rr_target: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_reserved, bool):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(self.is_reserved)}")
-		if not isinstance(self.is_rr_target, bool):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(self.is_rr_target)}")
-
-	@staticmethod
-	def bulk_create_ta(value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		return {'name': 'dns.ip_addr.bulk_create', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_stop': value_stop_new, 'is_reserved': is_reserved_new, 'value_start': value_start_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_create(cls, api_session: APISession, value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_create_ta(is_dhcp_new=is_dhcp_new, value_stop_new=value_stop_new, is_reserved_new=is_reserved_new, value_start_new=value_start_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_delete_ta(value_start_old: str, value_stop_old: str = None) -> dict:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, value_start_old: str, value_stop_old: str = None) -> list:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(is_dhcp_new: bool = None, is_reserved_new: bool = None, value_stop_old: str = None, value_start_old: str = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, is_dhcp_new: bool = None, is_reserved_new: bool = None, value_stop_old: str = None, value_start_old: str = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(is_dhcp_new=is_dhcp_new, is_reserved_new=is_reserved_new, value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(value_new: str, is_dhcp_new: bool = False, is_reserved_new: bool = False) -> dict:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-
-		return {'name': 'dns.ip_addr.create', 'new': _denullify_dict({'value': value_new, 'is_dhcp': is_dhcp_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: str, is_dhcp_new: bool = False, is_reserved_new: bool = False) -> list:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, is_dhcp_new=is_dhcp_new, is_reserved_new=is_reserved_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'dns.ip_addr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, gpk_list_old: list = None, value_cidr_old: str = None, value_list_old: list = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.ip_addr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'gpk_list': gpk_list_old, 'value_cidr': value_cidr_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'is_reserved': is_reserved_old, 'fetch_offset': fetch_offset_old, 'is_rr_target': is_rr_target_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, gpk_list_old: list = None, value_cidr_old: str = None, value_list_old: list = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, gpk_list_old=gpk_list_old, value_cidr_old=value_cidr_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, is_reserved_old=is_reserved_old, fetch_offset_old=fetch_offset_old, is_rr_target_old=is_rr_target_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_old: str = None, value_cidr_old: str = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-
-		return {'name': 'dns.ip_addr.update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_cidr': value_cidr_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({'value': value_old, 'value_cidr': value_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_old: str = None, value_cidr_old: str = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_dhcp_new=is_dhcp_new, value_cidr_new=value_cidr_new, is_reserved_new=is_reserved_new, value_old=value_old, value_cidr_old=value_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	gpk: str
-	ttl: int
-	data: str
-	fqdn: str
-	type: str
-	zone: str
-	is_own: bool
-	is_auth: bool
-	fqdn_type: str
-	host_is_nws: bool
-	target_fqdn: str
-	target_ipaddr: str
-	ttl_reset_date: str
-	ttl_reset_days: int
-	fqdn_description: str
-	target_fqdn_type: str
-	ttl_zone_default: int
-	target_ipaddr_type: str
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-	rr_chain_target_subnet_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_auth, bool):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(self.is_auth)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.host_is_nws, bool):
-			raise ValueError(f"'host_is_nws' of incorrect type. Expected bool, got {type(self.host_is_nws)}")
-		if self.target_fqdn is not None and not isinstance(self.target_fqdn, str):
-			raise ValueError(f"'target_fqdn' of incorrect type. Expected str, got {type(self.target_fqdn)}")
-		if self.target_ipaddr is not None and not isinstance(self.target_ipaddr, str):
-			raise ValueError(f"'target_ipaddr' of incorrect type. Expected str, got {type(self.target_ipaddr)}")
-		if self.ttl_reset_date is not None and not isinstance(self.ttl_reset_date, str):
-			raise ValueError(f"'ttl_reset_date' of incorrect type. Expected str, got {type(self.ttl_reset_date)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.fqdn_description is not None and not isinstance(self.fqdn_description, str):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(self.fqdn_description)}")
-		if self.target_fqdn_type is not None and not isinstance(self.target_fqdn_type, str):
-			raise ValueError(f"'target_fqdn_type' of incorrect type. Expected str, got {type(self.target_fqdn_type)}")
-		if not isinstance(self.ttl_zone_default, int):
-			raise ValueError(f"'ttl_zone_default' of incorrect type. Expected int, got {type(self.ttl_zone_default)}")
-		if self.target_ipaddr_type is not None and not isinstance(self.target_ipaddr_type, str):
-			raise ValueError(f"'target_ipaddr_type' of incorrect type. Expected str, got {type(self.target_ipaddr_type)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-		if self.rr_chain_target_subnet_gfk_list is not None and not isinstance(self.rr_chain_target_subnet_gfk_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_gfk_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dns.record.create', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.record.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.record.imp', 'new': _denullify_dict({'fqdn': fqdn_new, 'fqdn_type': fqdn_type_new, 'import_data': import_data_new, 'strict_mode': strict_mode_new, 'fqdn_description': fqdn_description_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(fqdn_new=fqdn_new, fqdn_type_new=fqdn_type_new, import_data_new=import_data_new, strict_mode_new=strict_mode_new, fqdn_description_new=fqdn_description_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, data_old: str = None, type_old: str = None, zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, gpk_list_old: list = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_old is not None and not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		return {'name': 'dns.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'data': data_old, 'type': type_old, 'zone': zone_old, 'is_own': is_own_old, 'is_auth': is_auth_old, 'gpk_list': gpk_list_old, 'data_list': data_list_old, 'do_nn_ttl': do_nn_ttl_old, 'fqdn_list': fqdn_list_old, 'type_list': type_list_old, 'data_regexp': data_regexp_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'fqdn_label_list': fqdn_label_list_old, 'fqdn_label_regexp': fqdn_label_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'rr_chain_target_subnet_gfk_list': rr_chain_target_subnet_gfk_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, data_old: str = None, type_old: str = None, zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, gpk_list_old: list = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if data_old is not None and not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, data_old=data_old, type_old=type_old, zone_old=zone_old, is_own_old=is_own_old, is_auth_old=is_auth_old, gpk_list_old=gpk_list_old, data_list_old=data_list_old, do_nn_ttl_old=do_nn_ttl_old, fqdn_list_old=fqdn_list_old, type_list_old=type_list_old, data_regexp_old=data_regexp_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, fqdn_label_list_old=fqdn_label_list_old, fqdn_label_regexp_old=fqdn_label_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_is_reverse_unique_old=target_is_reverse_unique_old, rr_chain_target_subnet_gfk_list_old=rr_chain_target_subnet_gfk_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		return {'name': 'dns.record.update', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2group(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def bulk_update_ta(fqdn_value_list_new: list = None, group_name_list_new: list = None, fqdn_value_old: str = None, group_name_old: str = None, fqdn_value_list_old: list = None, group_name_list_old: list = None) -> dict:
-		if fqdn_value_list_new is not None and not (isinstance(fqdn_value_list_new, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		return {'name': 'dns.fqdn2group.bulk_update', 'new': _denullify_dict({'fqdn_value_list': fqdn_value_list_new, 'group_name_list': group_name_list_new}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'group_name': group_name_old, 'fqdn_value_list': fqdn_value_list_old, 'group_name_list': group_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, fqdn_value_list_new: list = None, group_name_list_new: list = None, fqdn_value_old: str = None, group_name_old: str = None, fqdn_value_list_old: list = None, group_name_list_old: list = None) -> list:
-		if fqdn_value_list_new is not None and not (isinstance(fqdn_value_list_new, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(fqdn_value_list_new=fqdn_value_list_new, group_name_list_new=group_name_list_new, fqdn_value_old=fqdn_value_old, group_name_old=group_name_old, fqdn_value_list_old=fqdn_value_list_old, group_name_list_old=group_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, group_name_new: str) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'dns.fqdn2group.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, group_name_new: str) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, group_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'dns.fqdn2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, group_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fqdn_value_old: str = None, group_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fqdn_value': fqdn_value_old, 'group_name': group_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_value_list': fqdn_value_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fqdn_value_old: str = None, group_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fqdn_value_old=fqdn_value_old, group_name_old=group_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_value_list_old=fqdn_value_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2ou(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'dns.fqdn2ou.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fqdn_value_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, fqdn_value_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fqdn_value': fqdn_value_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'ou_short_name': ou_short_name_old, 'fqdn_value_list': fqdn_value_list_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fqdn_value_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, ou_short_name_old: str = None, fqdn_value_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fqdn_value_old is not None and not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fqdn_value_old=fqdn_value_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, ou_short_name_old=ou_short_name_old, fqdn_value_list_old=fqdn_value_list_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordImp(APIObject):
-	ttl: int
-	type: str
-	data_list: str
-	ttl_reset_days: int
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.type is not None and not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.data_list is not None and not isinstance(self.data_list, str):
-			raise ValueError(f"'data_list' of incorrect type. Expected str, got {type(self.data_list)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.target_is_singleton is not None and not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self.target_is_reverse_unique is not None and not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
diff --git a/4.1/golang/dnscfg.py b/4.1/golang/dnscfg.py
deleted file mode 100644
index 8c0f3e1..0000000
--- a/4.1/golang/dnscfg.py
+++ /dev/null
@@ -1,1564 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class FqdnType(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_dhcp: bool
-	is_host: bool
-	_intname: str
-	position: int
-	rad_type: int
-	_groupname: str
-	description: str
-	is_wildcard: bool
-	is_nonterminal: bool
-	version_name_dict: dict
-	permission_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_host, bool):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(self.is_host)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.rad_type, int):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(self.rad_type)}")
-		if not isinstance(self._groupname, str):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(self._groupname)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_wildcard, bool):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(self.is_wildcard)}")
-		if not isinstance(self.is_nonterminal, bool):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(self.is_nonterminal)}")
-		if not isinstance(self.version_name_dict, dict):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(self.version_name_dict)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn_type.create', 'new': _denullify_dict({'name': name_new, 'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'do_include_release': do_include_release_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, do_include_release_new=do_include_release_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'is_host': is_host_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_wildcard': is_wildcard_old, 'fetch_offset': fetch_offset_old, 'rad_type_list': rad_type_list_old, 'is_nonterminal': is_nonterminal_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, is_host_old=is_host_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_wildcard_old=is_wildcard_old, fetch_offset_old=fetch_offset_old, rad_type_list_old=rad_type_list_old, is_nonterminal_old=is_nonterminal_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'version_name_dict': version_name_dict_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, version_name_dict_new=version_name_dict_new, permission_fq_name_new=permission_fq_name_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	name: str
-	rfc_info: str
-	num_value: int
-	is_internal: bool
-	is_addr_based: bool
-	is_name_based: bool
-	force_auto_dml: bool
-	fqdn_type_dflt: str
-	_fqdn_inttype_dflt: str
-	target_is_singleton_dflt: bool
-	target_is_reverse_unique_dflt: bool
-	dnspython_rdata_target_attribute_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.rfc_info is not None and not isinstance(self.rfc_info, str):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(self.rfc_info)}")
-		if not isinstance(self.num_value, int):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(self.num_value)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-		if not isinstance(self.is_addr_based, bool):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(self.is_addr_based)}")
-		if not isinstance(self.is_name_based, bool):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(self.is_name_based)}")
-		if not isinstance(self.force_auto_dml, bool):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(self.force_auto_dml)}")
-		if self.fqdn_type_dflt is not None and not isinstance(self.fqdn_type_dflt, str):
-			raise ValueError(f"'fqdn_type_dflt' of incorrect type. Expected str, got {type(self.fqdn_type_dflt)}")
-		if self._fqdn_inttype_dflt is not None and not isinstance(self._fqdn_inttype_dflt, str):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(self._fqdn_inttype_dflt)}")
-		if not isinstance(self.target_is_singleton_dflt, bool):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(self.target_is_singleton_dflt)}")
-		if not isinstance(self.target_is_reverse_unique_dflt, bool):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique_dflt)}")
-		if self.dnspython_rdata_target_attribute_name is not None and not isinstance(self.dnspython_rdata_target_attribute_name, str):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(self.dnspython_rdata_target_attribute_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-
-		return {'name': 'dnscfg.record_type.create', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new, 'dnspython_rdata_target_attribute_name': dnspython_rdata_target_attribute_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, dnspython_rdata_target_attribute_name_new=dnspython_rdata_target_attribute_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'is_addr_based': is_addr_based_old, 'is_name_based': is_name_based_old, 'force_auto_dml': force_auto_dml_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, is_addr_based_old=is_addr_based_old, is_name_based_old=is_name_based_old, force_auto_dml_old=force_auto_dml_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.update', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new, 'dnspython_rdata_target_attribute_name': dnspython_rdata_target_attribute_name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, dnspython_rdata_target_attribute_name_new=dnspython_rdata_target_attribute_name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordInttype(APIObject):
-	gpk: str
-	is_own: bool
-	_intname: str
-	fqdn_type: str
-	description: str
-	record_type: str
-	_fqdn_inttype: str
-	target_fqdn_type: str
-	version_def_dict: dict
-	fqdn_is_singleton: bool
-	permission_fq_name: str
-	target_ipaddr_type: str
-	target_is_singleton: bool
-	_target_fqdn_inttype: str
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.record_type, str):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(self.record_type)}")
-		if not isinstance(self._fqdn_inttype, str):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(self._fqdn_inttype)}")
-		if self.target_fqdn_type is not None and not isinstance(self.target_fqdn_type, str):
-			raise ValueError(f"'target_fqdn_type' of incorrect type. Expected str, got {type(self.target_fqdn_type)}")
-		if not isinstance(self.version_def_dict, dict):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(self.version_def_dict)}")
-		if not isinstance(self.fqdn_is_singleton, bool):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(self.fqdn_is_singleton)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if self.target_ipaddr_type is not None and not isinstance(self.target_ipaddr_type, str):
-			raise ValueError(f"'target_ipaddr_type' of incorrect type. Expected str, got {type(self.target_ipaddr_type)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self._target_fqdn_inttype is not None and not isinstance(self._target_fqdn_inttype, str):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(self._target_fqdn_inttype)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-
-	@staticmethod
-	def create_ta(description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dnscfg.record_inttype.create', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'do_include_release': do_include_release_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, fqdn_is_singleton_new=fqdn_is_singleton_new, do_include_release_new=do_include_release_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		return {'name': 'dnscfg.record_inttype.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_type_list': fqdn_type_list_old, 'record_type_list': record_type_list_old, 'fqdn_is_singleton': fqdn_is_singleton_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_fqdn_type_list': target_fqdn_type_list_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'record_type_is_addr_based': record_type_is_addr_based_old, 'record_type_is_name_based': record_type_is_name_based_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_type_list_old=fqdn_type_list_old, record_type_list_old=record_type_list_old, fqdn_is_singleton_old=fqdn_is_singleton_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_fqdn_type_list_old=target_fqdn_type_list_old, target_is_reverse_unique_old=target_is_reverse_unique_old, record_type_is_addr_based_old=record_type_is_addr_based_old, record_type_is_name_based_old=record_type_is_name_based_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.update', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'version_def_dict': version_def_dict_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, version_def_dict_new=version_def_dict_new, fqdn_is_singleton_new=fqdn_is_singleton_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSet(APIObject):
-	gpk: str
-	name: str
-	description: str
-	soa_data_retry: int
-	soa_data_expire: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	soa_data_hostmaster: str
-	members_are_exclusive: bool
-	zone_data_is_external: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.members_are_exclusive, bool):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(self.members_are_exclusive)}")
-		if not isinstance(self.zone_data_is_external, bool):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(self.zone_data_is_external)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		return {'name': 'dnscfg.ns_set.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		return {'name': 'dnscfg.ns_set.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'soa_data_retry': soa_data_retry_old, 'soa_data_expire': soa_data_expire_old, 'soa_data_minimum': soa_data_minimum_old, 'soa_data_refresh': soa_data_refresh_old, 'filter_params_dict': filter_params_dict_old, 'soa_data_hostmaster': soa_data_hostmaster_old, 'sorting_params_list': sorting_params_list_old, 'members_are_exclusive': members_are_exclusive_old, 'zone_data_is_external': zone_data_is_external_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, soa_data_retry_old=soa_data_retry_old, soa_data_expire_old=soa_data_expire_old, soa_data_minimum_old=soa_data_minimum_old, soa_data_refresh_old=soa_data_refresh_old, filter_params_dict_old=filter_params_dict_old, soa_data_hostmaster_old=soa_data_hostmaster_old, sorting_params_list_old=sorting_params_list_old, members_are_exclusive_old=members_are_exclusive_old, zone_data_is_external_old=zone_data_is_external_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetMember(APIObject):
-	gpk: str
-	ns_fqdn: str
-	ns_set_name: str
-	ns_is_master: bool
-	ns_is_native: bool
-	ns_is_primary: bool
-	ns_is_registered: bool
-	ns_xfer_master_fqdn: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.ns_fqdn, str):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(self.ns_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.ns_is_master, bool):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(self.ns_is_master)}")
-		if not isinstance(self.ns_is_native, bool):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(self.ns_is_native)}")
-		if not isinstance(self.ns_is_primary, bool):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(self.ns_is_primary)}")
-		if not isinstance(self.ns_is_registered, bool):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(self.ns_is_registered)}")
-		if self.ns_xfer_master_fqdn is not None and not isinstance(self.ns_xfer_master_fqdn, str):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(self.ns_xfer_master_fqdn)}")
-
-	@staticmethod
-	def create_ta(ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		return {'name': 'dnscfg.ns_set_member.create', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ns_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, ns_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, ns_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if ns_fqdn_old is not None and not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ns_fqdn_list_old is not None and not (isinstance(ns_fqdn_list_old, list)):
-			raise ValueError(f"'ns_fqdn_list' of incorrect type. Expected list, got {type(ns_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'ns_fqdn': ns_fqdn_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'ns_fqdn_list': ns_fqdn_list_old, 'ns_set_name_list': ns_set_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, ns_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, ns_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if ns_fqdn_old is not None and not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ns_fqdn_list_old is not None and not (isinstance(ns_fqdn_list_old, list)):
-			raise ValueError(f"'ns_fqdn_list' of incorrect type. Expected list, got {type(ns_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, ns_fqdn_old=ns_fqdn_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, ns_fqdn_list_old=ns_fqdn_list_old, ns_set_name_list_old=ns_set_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.update', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2perm(APIObject):
-	gpk: str
-	fqdn: str
-	is_recursive: bool
-	is_zone_bound: bool
-	recursive_min_lvl: int
-	permission_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.is_zone_bound, bool):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(self.is_zone_bound)}")
-		if not isinstance(self.recursive_min_lvl, int):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(self.recursive_min_lvl)}")
-		if not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn2perm.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(permission_fq_name_old: str = None) -> dict:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, permission_fq_name_old: str = None) -> list:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, permission_fq_name_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if permission_fq_name_list_old is not None and not (isinstance(permission_fq_name_list_old, list)):
-			raise ValueError(f"'permission_fq_name_list' of incorrect type. Expected list, got {type(permission_fq_name_list_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'permission_fq_name_list': permission_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, permission_fq_name_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if permission_fq_name_list_old is not None and not (isinstance(permission_fq_name_list_old, list)):
-			raise ValueError(f"'permission_fq_name_list' of incorrect type. Expected list, got {type(permission_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, permission_fq_name_list_old=permission_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> dict:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.update', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> list:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class FqdnTypeGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetHost(APIObject):
-	gpk: str
-	host_fqdn: str
-	ns_set_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.host_fqdn, str):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(self.host_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-
-	@staticmethod
-	def create_ta(host_fqdn_new: str, ns_set_name_new: str) -> dict:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		return {'name': 'dnscfg.ns_set_host.create', 'new': _denullify_dict({'host_fqdn': host_fqdn_new, 'ns_set_name': ns_set_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, host_fqdn_new: str, ns_set_name_new: str) -> list:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(host_fqdn_new=host_fqdn_new, ns_set_name_new=ns_set_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(host_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'host_fqdn': host_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, host_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(host_fqdn_old=host_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, host_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, host_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if host_fqdn_old is not None and not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if host_fqdn_list_old is not None and not (isinstance(host_fqdn_list_old, list)):
-			raise ValueError(f"'host_fqdn_list' of incorrect type. Expected list, got {type(host_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'host_fqdn': host_fqdn_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'host_fqdn_list': host_fqdn_list_old, 'ns_set_name_list': ns_set_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, host_fqdn_old: str = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, host_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if host_fqdn_old is not None and not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if host_fqdn_list_old is not None and not (isinstance(host_fqdn_list_old, list)):
-			raise ValueError(f"'host_fqdn_list' of incorrect type. Expected list, got {type(host_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, host_fqdn_old=host_fqdn_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, host_fqdn_list_old=host_fqdn_list_old, ns_set_name_list_old=ns_set_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/dnssec.py b/4.1/golang/dnssec.py
deleted file mode 100644
index efef5b3..0000000
--- a/4.1/golang/dnssec.py
+++ /dev/null
@@ -1,137 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class ZoneKey(APIObject):
-	gpk: str
-	tag: int
-	data: str
-	fqdn: str
-	flags: int
-	is_ksk: bool
-	is_active: bool
-	creation_ts: str
-	activation_ts: str
-	dnskey_rr_data: str
-	deactivation_ts: str
-	ds_rr_data_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.tag is not None and not isinstance(self.tag, int):
-			raise ValueError(f"'tag' of incorrect type. Expected int, got {type(self.tag)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.flags, int):
-			raise ValueError(f"'flags' of incorrect type. Expected int, got {type(self.flags)}")
-		if not isinstance(self.is_ksk, bool):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(self.is_ksk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.creation_ts, str):
-			raise ValueError(f"'creation_ts' of incorrect type. Expected str, got {type(self.creation_ts)}")
-		if self.activation_ts is not None and not isinstance(self.activation_ts, str):
-			raise ValueError(f"'activation_ts' of incorrect type. Expected str, got {type(self.activation_ts)}")
-		if not isinstance(self.dnskey_rr_data, str):
-			raise ValueError(f"'dnskey_rr_data' of incorrect type. Expected str, got {type(self.dnskey_rr_data)}")
-		if self.deactivation_ts is not None and not isinstance(self.deactivation_ts, str):
-			raise ValueError(f"'deactivation_ts' of incorrect type. Expected str, got {type(self.deactivation_ts)}")
-		if not isinstance(self.ds_rr_data_list, list):
-			raise ValueError(f"'ds_rr_data_list' of incorrect type. Expected list, got {type(self.ds_rr_data_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_ksk_new: bool) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		return {'name': 'dnssec.zone_key.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_ksk': is_ksk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_ksk_new: bool) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_ksk_new=is_ksk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dnssec.zone_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, fqdn_old: str = None, is_ksk_old: bool = None, gpk_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnssec.zone_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'fqdn': fqdn_old, 'is_ksk': is_ksk_old, 'gpk_list': gpk_list_old, 'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, fqdn_old: str = None, is_ksk_old: bool = None, gpk_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, fqdn_old=fqdn_old, is_ksk_old=is_ksk_old, gpk_list_old=gpk_list_old, is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/evlog.py b/4.1/golang/evlog.py
deleted file mode 100644
index d8283e6..0000000
--- a/4.1/golang/evlog.py
+++ /dev/null
@@ -1,266 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-
-	@staticmethod
-	def create_ta(short_name_new: str) -> dict:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'evlog.record_type.create', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, short_name_new: str) -> list:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'evlog.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, short_name_new: str = None) -> dict:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.update', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, short_name_new: str = None) -> list:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	data: str
-	type: str
-	object_gfk: str
-	language_tag: str
-	ta_timestamp: str
-	mgr_login_name: str
-	log_params_dict: dict
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.ta_timestamp, str):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(self.ta_timestamp)}")
-		if self.mgr_login_name is not None and not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.log_params_dict, dict):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(self.log_params_dict)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> dict:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'evlog.record.create', 'new': _denullify_dict({'text': text_new, 'type': type_new, 'object_pk': object_pk_new, 'object_gfk': object_gfk_new, 'ta_timestamp': ta_timestamp_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> list:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(text_new=text_new, type_new=type_new, object_pk_new=object_pk_new, object_gfk_new=object_gfk_new, ta_timestamp_new=ta_timestamp_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, log_param_state_old: int = None, log_param_value_old: str = None, log_params_dict_old: dict = None, log_param_fq_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, log_param_value_regexp_old: str = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if log_param_state_old is not None and not (isinstance(log_param_state_old, int)):
-			raise ValueError(f"'log_param_state' of incorrect type. Expected int, got {type(log_param_state_old)}")
-		if log_param_value_old is not None and not (isinstance(log_param_value_old, str)):
-			raise ValueError(f"'log_param_value' of incorrect type. Expected str, got {type(log_param_value_old)}")
-		if log_params_dict_old is not None and not (isinstance(log_params_dict_old, dict)):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(log_params_dict_old)}")
-		if log_param_fq_name_old is not None and not (isinstance(log_param_fq_name_old, str)):
-			raise ValueError(f"'log_param_fq_name' of incorrect type. Expected str, got {type(log_param_fq_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if log_param_value_regexp_old is not None and not (isinstance(log_param_value_regexp_old, str)):
-			raise ValueError(f"'log_param_value_regexp' of incorrect type. Expected str, got {type(log_param_value_regexp_old)}")
-
-		return {'name': 'evlog.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'top_n': top_n_old, 'type_list': type_list_old, 'object_gfk': object_gfk_old, 'ta_interval': ta_interval_old, 'language_tag': language_tag_old, 'ta_timestamp': ta_timestamp_old, 'mgr_login_name': mgr_login_name_old, 'log_param_state': log_param_state_old, 'log_param_value': log_param_value_old, 'log_params_dict': log_params_dict_old, 'log_param_fq_name': log_param_fq_name_old, 'top_n_from_newest': top_n_from_newest_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'log_param_value_regexp': log_param_value_regexp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, log_param_state_old: int = None, log_param_value_old: str = None, log_params_dict_old: dict = None, log_param_fq_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, log_param_value_regexp_old: str = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if log_param_state_old is not None and not (isinstance(log_param_state_old, int)):
-			raise ValueError(f"'log_param_state' of incorrect type. Expected int, got {type(log_param_state_old)}")
-		if log_param_value_old is not None and not (isinstance(log_param_value_old, str)):
-			raise ValueError(f"'log_param_value' of incorrect type. Expected str, got {type(log_param_value_old)}")
-		if log_params_dict_old is not None and not (isinstance(log_params_dict_old, dict)):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(log_params_dict_old)}")
-		if log_param_fq_name_old is not None and not (isinstance(log_param_fq_name_old, str)):
-			raise ValueError(f"'log_param_fq_name' of incorrect type. Expected str, got {type(log_param_fq_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if log_param_value_regexp_old is not None and not (isinstance(log_param_value_regexp_old, str)):
-			raise ValueError(f"'log_param_value_regexp' of incorrect type. Expected str, got {type(log_param_value_regexp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, top_n_old=top_n_old, type_list_old=type_list_old, object_gfk_old=object_gfk_old, ta_interval_old=ta_interval_old, language_tag_old=language_tag_old, ta_timestamp_old=ta_timestamp_old, mgr_login_name_old=mgr_login_name_old, log_param_state_old=log_param_state_old, log_param_value_old=log_param_value_old, log_params_dict_old=log_params_dict_old, log_param_fq_name_old=log_param_fq_name_old, top_n_from_newest_old=top_n_from_newest_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, log_param_value_regexp_old=log_param_value_regexp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/macauth.py b/4.1/golang/macauth.py
deleted file mode 100644
index c41fd96..0000000
--- a/4.1/golang/macauth.py
+++ /dev/null
@@ -1,175 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Client(APIObject):
-	gpk: str
-	is_own: bool
-	wpa_key: str
-	bcd_name: str
-	mac_addr: str
-	description: str
-	last_login_date: str
-	last_login_node_info: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.wpa_key is not None and not isinstance(self.wpa_key, str):
-			raise ValueError(f"'wpa_key' of incorrect type. Expected str, got {type(self.wpa_key)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.mac_addr, str):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(self.mac_addr)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if self.last_login_node_info is not None and not isinstance(self.last_login_node_info, str):
-			raise ValueError(f"'last_login_node_info' of incorrect type. Expected str, got {type(self.last_login_node_info)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		return {'name': 'macauth.client.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(mac_addr_old: str) -> dict:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, mac_addr_old: str) -> list:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, mac_addr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, mac_addr_list_old: list = None, description_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if mac_addr_old is not None and not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mac_addr_list_old is not None and not (isinstance(mac_addr_list_old, list)):
-			raise ValueError(f"'mac_addr_list' of incorrect type. Expected list, got {type(mac_addr_list_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'macauth.client.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'bcd_name': bcd_name_old, 'gpk_list': gpk_list_old, 'mac_addr': mac_addr_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'mac_addr_list': mac_addr_list_old, 'description_regexp': description_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, mac_addr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, mac_addr_list_old: list = None, description_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if mac_addr_old is not None and not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mac_addr_list_old is not None and not (isinstance(mac_addr_list_old, list)):
-			raise ValueError(f"'mac_addr_list' of incorrect type. Expected list, got {type(mac_addr_list_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, bcd_name_old=bcd_name_old, gpk_list_old=gpk_list_old, mac_addr_old=mac_addr_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, mac_addr_list_old=mac_addr_list_old, description_regexp_old=description_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> dict:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.update', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> list:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/nd.py b/4.1/golang/nd.py
deleted file mode 100644
index 7d383dd..0000000
--- a/4.1/golang/nd.py
+++ /dev/null
@@ -1,4562 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class IpSubnet(APIObject):
-	bcd: str
-	gpk: str
-	cidr: str
-	type: str
-	is_own: bool
-	is_private: bool
-	description: str
-	is_routable: bool
-	is_container: bool
-	default_gateway: str
-	dns_addr_rr_count: int
-	dhcp_ip_addr_count: int
-	dns_addr_rsv_count: int
-	is_iana_registered: bool
-	auto_create_ip_address: bool
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_private, bool):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(self.is_private)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if not isinstance(self.is_container, bool):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(self.is_container)}")
-		if self.default_gateway is not None and not isinstance(self.default_gateway, str):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(self.default_gateway)}")
-		if not isinstance(self.dns_addr_rr_count, int):
-			raise ValueError(f"'dns_addr_rr_count' of incorrect type. Expected int, got {type(self.dns_addr_rr_count)}")
-		if not isinstance(self.dhcp_ip_addr_count, int):
-			raise ValueError(f"'dhcp_ip_addr_count' of incorrect type. Expected int, got {type(self.dhcp_ip_addr_count)}")
-		if not isinstance(self.dns_addr_rsv_count, int):
-			raise ValueError(f"'dns_addr_rsv_count' of incorrect type. Expected int, got {type(self.dns_addr_rsv_count)}")
-		if not isinstance(self.is_iana_registered, bool):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(self.is_iana_registered)}")
-		if not isinstance(self.auto_create_ip_address, bool):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(self.auto_create_ip_address)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		return {'name': 'nd.ip_subnet.create', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'create_ipaddrs': create_ipaddrs_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new, 'auto_create_default_gateway': auto_create_default_gateway_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, create_ipaddrs_new=create_ipaddrs_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, auto_create_default_gateway_new=auto_create_default_gateway_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> dict:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		return {'name': 'nd.ip_subnet.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'cidr': cidr_old, 'delete_dns_rrs': delete_dns_rrs_old, 'delete_ipaddrs': delete_ipaddrs_old, 'delete_dhcp_objects': delete_dhcp_objects_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> list:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(cidr_old=cidr_old, delete_dns_rrs_old=delete_dns_rrs_old, delete_ipaddrs_old=delete_ipaddrs_old, delete_dhcp_objects_old=delete_dhcp_objects_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(bcd_old: str = None, gpk_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> dict:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		return {'name': 'nd.ip_subnet.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd': bcd_old, 'gpk': gpk_old, 'cidr': cidr_old, 'type': type_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'is_private': is_private_old, 'fetch_limit': fetch_limit_old, 'is_routable': is_routable_old, 'fetch_offset': fetch_offset_old, 'is_container': is_container_old, 'cidr_operator': cidr_operator_old, 'default_gateway': default_gateway_old, 'filter_params_dict': filter_params_dict_old, 'is_iana_registered': is_iana_registered_old, 'sorting_params_list': sorting_params_list_old, 'auto_create_ip_address': auto_create_ip_address_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, bcd_old: str = None, gpk_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> list:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(bcd_old=bcd_old, gpk_old=gpk_old, cidr_old=cidr_old, type_old=type_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, is_private_old=is_private_old, fetch_limit_old=fetch_limit_old, is_routable_old=is_routable_old, fetch_offset_old=fetch_offset_old, is_container_old=is_container_old, cidr_operator_old=cidr_operator_old, default_gateway_old=default_gateway_old, filter_params_dict_old=filter_params_dict_old, is_iana_registered_old=is_iana_registered_old, sorting_params_list_old=sorting_params_list_old, auto_create_ip_address_old=auto_create_ip_address_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		return {'name': 'nd.ip_subnet.update', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new}), 'old': _denullify_dict({'cidr': cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, cidr_old=cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	description: str
-	label_sortby: str
-	parent_fq_module: str
-	sub_module_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.label_sortby, str):
-			raise ValueError(f"'label_sortby' of incorrect type. Expected str, got {type(self.label_sortby)}")
-		if not isinstance(self.parent_fq_module, str):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(self.parent_fq_module)}")
-		if not isinstance(self.sub_module_count, int):
-			raise ValueError(f"'sub_module_count' of incorrect type. Expected int, got {type(self.sub_module_count)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, room_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.slot.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'fq_name': fq_name_old, 'gpk_list': gpk_list_old, 'bldg_list': bldg_list_old, 'room_list': room_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'parent_fq_module': parent_fq_module_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, room_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, fq_name_old=fq_name_old, gpk_list_old=gpk_list_old, bldg_list_old=bldg_list_old, room_list_old=room_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, parent_fq_module_old=parent_fq_module_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.slot.update', 'new': _denullify_dict({'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Floor(APIObject):
-	gpk: str
-	name: str
-	description: str
-	name_sortby: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, int):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(self.name_sortby)}")
-
-	@staticmethod
-	def create_ta(name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		return {'name': 'nd.floor.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.floor.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Room(APIObject):
-	gpk: str
-	bldg: str
-	name: str
-	floor: str
-	number: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.floor, str):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(self.floor)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.room.create', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bldg_old: str, number_old: str) -> dict:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bldg_old: str, number_old: str) -> list:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, bldg_old: str = None, name_old: str = None, floor_old: str = None, number_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.room.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'bldg': bldg_old, 'name': name_old, 'floor': floor_old, 'number': number_old, 'gpk_list': gpk_list_old, 'bldg_list': bldg_list_old, 'fetch_limit': fetch_limit_old, 'number_list': number_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, bldg_old: str = None, name_old: str = None, floor_old: str = None, number_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, bldg_old=bldg_old, name_old=name_old, floor_old=floor_old, number_old=number_old, gpk_list_old=gpk_list_old, bldg_list_old=bldg_list_old, fetch_limit_old=fetch_limit_old, number_list_old=number_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.update', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module(APIObject):
-	ap: str
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	is_child: bool
-	root_gfk: str
-	is_active: bool
-	tree_level: int
-	description: str
-	has_unq_name: bool
-	is_loc_depdnt: bool
-	parent_fq_slot: str
-	module_hierarchy_gfk_list: list
-
-	def __post_init__(self):
-		if self.ap is not None and not isinstance(self.ap, str):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(self.ap)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.root_gfk, str):
-			raise ValueError(f"'root_gfk' of incorrect type. Expected str, got {type(self.root_gfk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-		if self.parent_fq_slot is not None and not isinstance(self.parent_fq_slot, str):
-			raise ValueError(f"'parent_fq_slot' of incorrect type. Expected str, got {type(self.parent_fq_slot)}")
-		if not isinstance(self.module_hierarchy_gfk_list, list):
-			raise ValueError(f"'module_hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.module_hierarchy_gfk_list)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		return {'name': 'nd.module.create', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'type': type_new, 'fq_name': fq_name_new, 'description': description_new, 'attributes_dict': attributes_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, attributes_dict_new=attributes_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> dict:
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		return {'name': 'nd.module.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'force_delete_devs': force_delete_devs_old, 'force_disconnect_pp': force_disconnect_pp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> list:
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, force_delete_devs_old=force_delete_devs_old, force_disconnect_pp_old=force_disconnect_pp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, bldg_old: str = None, room_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, bldg_list_old: list = None, is_active_old: bool = None, room_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str) or isinstance(fq_name_old, ExplicitNull)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'bldg': bldg_old, 'room': room_old, 'type': type_old, 'fq_name': fq_name_old, 'gpk_list': gpk_list_old, 'is_child': is_child_old, 'bldg_list': bldg_list_old, 'is_active': is_active_old, 'room_list': room_list_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'has_unq_name': has_unq_name_old, 'label_regexp': label_regexp_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, bldg_old: str = None, room_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, bldg_list_old: list = None, is_active_old: bool = None, room_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str) or isinstance(fq_name_old, ExplicitNull)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, bldg_old=bldg_old, room_old=room_old, type_old=type_old, fq_name_old=fq_name_old, gpk_list_old=gpk_list_old, is_child_old=is_child_old, bldg_list_old=bldg_list_old, is_active_old=is_active_old, room_list_old=room_list_old, label_list_old=label_list_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, has_unq_name_old=has_unq_name_old, label_regexp_old=label_regexp_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.module.update', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VlanEgress(APIObject):
-	gpk: str
-	vlan_gfk: str
-	is_tagged: bool
-	l_port_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, vlan_gfk_list_old: list = None, l_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan_egress.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'is_tagged': is_tagged_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'vlan_gfk_list': vlan_gfk_list_old, 'l_port_gfk_list': l_port_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, vlan_gfk_list_old: list = None, l_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, is_tagged_old=is_tagged_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, vlan_gfk_list_old=vlan_gfk_list_old, l_port_gfk_list_old=l_port_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bldg(APIObject):
-	gpk: str
-	name: str
-	number: str
-	street: str
-	postal_code: int
-	geo_location: dict
-	site_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.street is not None and not isinstance(self.street, str):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(self.street)}")
-		if self.postal_code is not None and not isinstance(self.postal_code, int):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(self.postal_code)}")
-		if self.geo_location is not None and not isinstance(self.geo_location, dict):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(self.geo_location)}")
-		if not isinstance(self.site_fq_name, str):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(self.site_fq_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		return {'name': 'nd.bldg.create', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(number_old: str) -> dict:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, number_old: str) -> list:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, number_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		return {'name': 'nd.bldg.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'number': number_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'number_list': number_list_old, 'postal_code': postal_code_old, 'fetch_offset': fetch_offset_old, 'geo_location': geo_location_old, 'site_fq_name': site_fq_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'geo_location_distance': geo_location_distance_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, number_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if number_old is not None and not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, number_old=number_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, number_list_old=number_list_old, postal_code_old=postal_code_old, fetch_offset_old=fetch_offset_old, geo_location_old=geo_location_old, site_fq_name_old=site_fq_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, geo_location_distance_old=geo_location_distance_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.update', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort(APIObject):
-	gpk: str
-	name: str
-	type: str
-	speed: str
-	is_nnl: bool
-	mdl_bldg: str
-	mdl_room: str
-	mdl_type: str
-	protocol: str
-	module_gfk: str
-	type_group: str
-	description: str
-	mdl_fq_name: str
-	name_sortby: str
-	type_sortby: int
-	is_connected: bool
-	is_defective: bool
-	is_edge_node: bool
-	connected_gfk: str
-	connected_name: str
-	module_type_gfk: str
-	connected_mdl_bldg: str
-	connected_mdl_room: str
-	dest_connected_gfk: str
-	connection_position: int
-	connected_mdl_fq_name: str
-	is_internal_connected: bool
-	connection_id_gfk_list: list
-	internal_connected_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.speed, str):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(self.speed)}")
-		if not isinstance(self.is_nnl, bool):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(self.is_nnl)}")
-		if self.mdl_bldg is not None and not isinstance(self.mdl_bldg, str):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(self.mdl_bldg)}")
-		if self.mdl_room is not None and not isinstance(self.mdl_room, str):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(self.mdl_room)}")
-		if not isinstance(self.mdl_type, str):
-			raise ValueError(f"'mdl_type' of incorrect type. Expected str, got {type(self.mdl_type)}")
-		if not isinstance(self.protocol, str):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(self.protocol)}")
-		if not isinstance(self.module_gfk, str):
-			raise ValueError(f"'module_gfk' of incorrect type. Expected str, got {type(self.module_gfk)}")
-		if not isinstance(self.type_group, str):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(self.type_group)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if not isinstance(self.type_sortby, int):
-			raise ValueError(f"'type_sortby' of incorrect type. Expected int, got {type(self.type_sortby)}")
-		if not isinstance(self.is_connected, bool):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(self.is_connected)}")
-		if not isinstance(self.is_defective, bool):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(self.is_defective)}")
-		if not isinstance(self.is_edge_node, bool):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(self.is_edge_node)}")
-		if not isinstance(self.connected_gfk, str):
-			raise ValueError(f"'connected_gfk' of incorrect type. Expected str, got {type(self.connected_gfk)}")
-		if self.connected_name is not None and not isinstance(self.connected_name, str):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(self.connected_name)}")
-		if not isinstance(self.module_type_gfk, str):
-			raise ValueError(f"'module_type_gfk' of incorrect type. Expected str, got {type(self.module_type_gfk)}")
-		if self.connected_mdl_bldg is not None and not isinstance(self.connected_mdl_bldg, str):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(self.connected_mdl_bldg)}")
-		if self.connected_mdl_room is not None and not isinstance(self.connected_mdl_room, str):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(self.connected_mdl_room)}")
-		if not isinstance(self.dest_connected_gfk, str):
-			raise ValueError(f"'dest_connected_gfk' of incorrect type. Expected str, got {type(self.dest_connected_gfk)}")
-		if not isinstance(self.connection_position, int):
-			raise ValueError(f"'connection_position' of incorrect type. Expected int, got {type(self.connection_position)}")
-		if self.connected_mdl_fq_name is not None and not isinstance(self.connected_mdl_fq_name, str):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(self.connected_mdl_fq_name)}")
-		if not isinstance(self.is_internal_connected, bool):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(self.is_internal_connected)}")
-		if not isinstance(self.connection_id_gfk_list, list):
-			raise ValueError(f"'connection_id_gfk_list' of incorrect type. Expected list, got {type(self.connection_id_gfk_list)}")
-		if not isinstance(self.internal_connected_gfk, str):
-			raise ValueError(f"'internal_connected_gfk' of incorrect type. Expected str, got {type(self.internal_connected_gfk)}")
-
-	@staticmethod
-	def bulk_connect_ta(mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> dict:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.bulk_connect', 'new': _denullify_dict({'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'name_stop': name_stop_new, 'name_start': name_start_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_ports': include_all_ports_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_connect(cls, api_session: APISession, mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> list:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_connect_ta(mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, name_stop_new=name_stop_new, name_start_new=name_start_new, mdl_fq_name_new=mdl_fq_name_new, include_all_ports_new=include_all_ports_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_disconnect_ta(mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.bulk_disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_ports': include_all_ports_old, 'type_group_is_fix': type_group_is_fix_old, 'include_all_submdls': include_all_submdls_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_disconnect(cls, api_session: APISession, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_disconnect_ta(mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, include_all_ports_old=include_all_ports_old, type_group_is_fix_old=type_group_is_fix_old, include_all_submdls_old=include_all_submdls_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_move_connection_ta(connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> dict:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		return {'name': 'nd.p_port.bulk_move_connection', 'new': _denullify_dict({'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_copy_pp_description': do_copy_pp_description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_move_connection(cls, api_session: APISession, connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> list:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_move_connection_ta(connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_copy_pp_description_old=do_copy_pp_description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def connect_ta(name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.connect', 'new': _denullify_dict({'name': name_new, 'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'mdl_fq_name': mdl_fq_name_new, 'connected_name': connected_name_new, 'patch_cable_name': patch_cable_name_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def connect(cls, api_session: APISession, name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.connect_ta(name_new=name_new, mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, mdl_fq_name_new=mdl_fq_name_new, connected_name_new=connected_name_new, patch_cable_name_new=patch_cable_name_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def disconnect_ta(name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def disconnect(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.disconnect_ta(name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, gpk_list_old: list = None, protocol_old: str = None, name_list_old: list = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, mdl_bldg_list_old: list = None, mdl_room_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if mdl_bldg_list_old is not None and not (isinstance(mdl_bldg_list_old, list)):
-			raise ValueError(f"'mdl_bldg_list' of incorrect type. Expected list, got {type(mdl_bldg_list_old)}")
-		if mdl_room_list_old is not None and not (isinstance(mdl_room_list_old, list)):
-			raise ValueError(f"'mdl_room_list' of incorrect type. Expected list, got {type(mdl_room_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		return {'name': 'nd.p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'speed': speed_old, 'is_nnl': is_nnl_old, 'gpk_list': gpk_list_old, 'protocol': protocol_old, 'name_list': name_list_old, 'type_group': type_group_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'is_connected': is_connected_old, 'is_edge_node': is_edge_node_old, 'mdl_bldg_list': mdl_bldg_list_old, 'mdl_room_list': mdl_room_list_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_internal_connected': is_internal_connected_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, gpk_list_old: list = None, protocol_old: str = None, name_list_old: list = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, mdl_bldg_list_old: list = None, mdl_room_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if mdl_bldg_list_old is not None and not (isinstance(mdl_bldg_list_old, list)):
-			raise ValueError(f"'mdl_bldg_list' of incorrect type. Expected list, got {type(mdl_bldg_list_old)}")
-		if mdl_room_list_old is not None and not (isinstance(mdl_room_list_old, list)):
-			raise ValueError(f"'mdl_room_list' of incorrect type. Expected list, got {type(mdl_room_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, speed_old=speed_old, is_nnl_old=is_nnl_old, gpk_list_old=gpk_list_old, protocol_old=protocol_old, name_list_old=name_list_old, type_group_old=type_group_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, is_connected_old=is_connected_old, is_edge_node_old=is_edge_node_old, mdl_bldg_list_old=mdl_bldg_list_old, mdl_room_list_old=mdl_room_list_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_internal_connected_old=is_internal_connected_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		return {'name': 'nd.p_port.update', 'new': _denullify_dict({'description': description_new, 'is_defective': is_defective_new}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, is_defective_new=is_defective_new, name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Site(APIObject):
-	gpk: str
-	name: str
-	type: str
-	fq_name: str
-	has_parent: bool
-	description: str
-	type_is_child: bool
-	parent_fq_name: str
-	type_force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.has_parent, bool):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(self.has_parent)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.type_is_child, bool):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(self.type_is_child)}")
-		if self.parent_fq_name is not None and not isinstance(self.parent_fq_name, str):
-			raise ValueError(f"'parent_fq_name' of incorrect type. Expected str, got {type(self.parent_fq_name)}")
-		if not isinstance(self.type_force_is_child, bool):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(self.type_force_is_child)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.site.create', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, fq_name_list_old: list = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		return {'name': 'nd.site.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'type': type_old, 'fq_name': fq_name_old, 'gpk_list': gpk_list_old, 'has_parent': has_parent_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'type_is_child': type_is_child_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'type_force_is_child': type_force_is_child_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, type_old: str = None, fq_name_old: str = None, gpk_list_old: list = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, fq_name_list_old: list = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if fq_name_old is not None and not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, type_old=type_old, fq_name_old=fq_name_old, gpk_list_old=gpk_list_old, has_parent_old=has_parent_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, type_is_child_old=type_is_child_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, type_force_is_child_old=type_force_is_child_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.update', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module2ap(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	ap_name: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.ap_name, str):
-			raise ValueError(f"'ap_name' of incorrect type. Expected str, got {type(self.ap_name)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, ap_name_list_old: list = None, fetch_offset_old: int = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2ap.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'mdl_fq_name': mdl_fq_name_old, 'ap_name_list': ap_name_list_old, 'fetch_offset': fetch_offset_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, ap_name_list_old: list = None, fetch_offset_old: int = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, mdl_fq_name_old=mdl_fq_name_old, ap_name_list_old=ap_name_list_old, fetch_offset_old=fetch_offset_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd(APIObject):
-	gpk: str
-	name: str
-	categ: str
-	is_own: bool
-	seclvl: int
-	description: str
-	dhcp_domain: str
-	dhcp_enabled: bool
-	dns_search_list: list
-	admin_description: str
-	dhcp_opt_t1_percent: int
-	dhcp_opt_t2_percent: int
-	dhcp_ttl_value_percent: int
-	dhcp_leasetime_dyn_days: int
-	dhcp_leasetime_dyn_hours: int
-	dhcp_leasetime_dyn_minutes: int
-	dhcp_leasetime_static_days: int
-	dhcp_leasetime_static_hours: int
-	dhcp_offer_rsv_time_seconds: int
-	dhcp_leasetime_static_minutes: int
-	dhcp_dynamic_lease_removal_time: str
-	dhcp_new_leases_get_static_addr: bool
-	dhcp_new_leases_get_static_fqdn: bool
-	dhcp_new_leases_get_dynamic_addr: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.categ, str):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(self.categ)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.seclvl, int):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(self.seclvl)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.dhcp_domain is not None and not isinstance(self.dhcp_domain, str):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(self.dhcp_domain)}")
-		if not isinstance(self.dhcp_enabled, bool):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(self.dhcp_enabled)}")
-		if not isinstance(self.dns_search_list, list):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(self.dns_search_list)}")
-		if self.admin_description is not None and not isinstance(self.admin_description, str):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(self.admin_description)}")
-		if not isinstance(self.dhcp_opt_t1_percent, int):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t1_percent)}")
-		if not isinstance(self.dhcp_opt_t2_percent, int):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t2_percent)}")
-		if not isinstance(self.dhcp_ttl_value_percent, int):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(self.dhcp_ttl_value_percent)}")
-		if not isinstance(self.dhcp_leasetime_dyn_days, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_days)}")
-		if not isinstance(self.dhcp_leasetime_dyn_hours, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_hours)}")
-		if not isinstance(self.dhcp_leasetime_dyn_minutes, int):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(self.dhcp_leasetime_dyn_minutes)}")
-		if not isinstance(self.dhcp_leasetime_static_days, int):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_days)}")
-		if not isinstance(self.dhcp_leasetime_static_hours, int):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_hours)}")
-		if not isinstance(self.dhcp_offer_rsv_time_seconds, int):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(self.dhcp_offer_rsv_time_seconds)}")
-		if not isinstance(self.dhcp_leasetime_static_minutes, int):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(self.dhcp_leasetime_static_minutes)}")
-		if not isinstance(self.dhcp_dynamic_lease_removal_time, str):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(self.dhcp_dynamic_lease_removal_time)}")
-		if not isinstance(self.dhcp_new_leases_get_static_addr, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_addr)}")
-		if not isinstance(self.dhcp_new_leases_get_static_fqdn, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_fqdn)}")
-		if not isinstance(self.dhcp_new_leases_get_dynamic_addr, bool):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_dynamic_addr)}")
-
-	@staticmethod
-	def copy_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'nd.bcd.copy', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def copy(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.copy_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_ttl_value_percent_new: int = 60, dhcp_leasetime_dyn_days_new: int = 0, dhcp_leasetime_dyn_hours_new: int = 2, dhcp_leasetime_dyn_minutes_new: int = 0, dhcp_leasetime_static_days_new: int = 0, dhcp_leasetime_static_hours_new: int = 6, dhcp_offer_rsv_time_seconds_new: int = 15, dhcp_leasetime_static_minutes_new: int = 0, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False, dhcp_new_leases_get_dynamic_addr_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-
-		return {'name': 'nd.bcd.create', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'dns_search_list': dns_search_list_new, 'admin_description': admin_description_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_leasetime_dyn_days': dhcp_leasetime_dyn_days_new, 'dhcp_leasetime_dyn_hours': dhcp_leasetime_dyn_hours_new, 'dhcp_leasetime_dyn_minutes': dhcp_leasetime_dyn_minutes_new, 'dhcp_leasetime_static_days': dhcp_leasetime_static_days_new, 'dhcp_leasetime_static_hours': dhcp_leasetime_static_hours_new, 'dhcp_offer_rsv_time_seconds': dhcp_offer_rsv_time_seconds_new, 'dhcp_leasetime_static_minutes': dhcp_leasetime_static_minutes_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_ttl_value_percent_new: int = 60, dhcp_leasetime_dyn_days_new: int = 0, dhcp_leasetime_dyn_hours_new: int = 2, dhcp_leasetime_dyn_minutes_new: int = 0, dhcp_leasetime_static_days_new: int = 0, dhcp_leasetime_static_hours_new: int = 6, dhcp_offer_rsv_time_seconds_new: int = 15, dhcp_leasetime_static_minutes_new: int = 0, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False, dhcp_new_leases_get_dynamic_addr_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, dns_search_list_new=dns_search_list_new, admin_description_new=admin_description_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_leasetime_dyn_days_new=dhcp_leasetime_dyn_days_new, dhcp_leasetime_dyn_hours_new=dhcp_leasetime_dyn_hours_new, dhcp_leasetime_dyn_minutes_new=dhcp_leasetime_dyn_minutes_new, dhcp_leasetime_static_days_new=dhcp_leasetime_static_days_new, dhcp_leasetime_static_hours_new=dhcp_leasetime_static_hours_new, dhcp_offer_rsv_time_seconds_new=dhcp_offer_rsv_time_seconds_new, dhcp_leasetime_static_minutes_new=dhcp_leasetime_static_minutes_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, dhcp_new_leases_get_dynamic_addr_new=dhcp_new_leases_get_dynamic_addr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None, dhcp_new_leases_get_dynamic_addr_old: bool = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-		if dhcp_new_leases_get_dynamic_addr_old is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_old)}")
-
-		return {'name': 'nd.bcd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'dhcp_enabled': dhcp_enabled_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_old, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_old, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None, dhcp_new_leases_get_dynamic_addr_old: bool = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-		if dhcp_new_leases_get_dynamic_addr_old is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, dhcp_enabled_old=dhcp_enabled_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, dhcp_new_leases_get_static_addr_old=dhcp_new_leases_get_static_addr_old, dhcp_new_leases_get_static_fqdn_old=dhcp_new_leases_get_static_fqdn_old, dhcp_new_leases_get_dynamic_addr_old=dhcp_new_leases_get_dynamic_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_ttl_value_percent_new: int = None, dhcp_leasetime_dyn_days_new: int = None, dhcp_leasetime_dyn_hours_new: int = None, dhcp_leasetime_dyn_minutes_new: int = None, dhcp_leasetime_static_days_new: int = None, dhcp_leasetime_static_hours_new: int = None, dhcp_offer_rsv_time_seconds_new: int = None, dhcp_leasetime_static_minutes_new: int = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None, dhcp_new_leases_get_dynamic_addr_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.update', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'dns_search_list': dns_search_list_new, 'admin_description': admin_description_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_leasetime_dyn_days': dhcp_leasetime_dyn_days_new, 'dhcp_leasetime_dyn_hours': dhcp_leasetime_dyn_hours_new, 'dhcp_leasetime_dyn_minutes': dhcp_leasetime_dyn_minutes_new, 'dhcp_leasetime_static_days': dhcp_leasetime_static_days_new, 'dhcp_leasetime_static_hours': dhcp_leasetime_static_hours_new, 'dhcp_offer_rsv_time_seconds': dhcp_offer_rsv_time_seconds_new, 'dhcp_leasetime_static_minutes': dhcp_leasetime_static_minutes_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_ttl_value_percent_new: int = None, dhcp_leasetime_dyn_days_new: int = None, dhcp_leasetime_dyn_hours_new: int = None, dhcp_leasetime_dyn_minutes_new: int = None, dhcp_leasetime_static_days_new: int = None, dhcp_leasetime_static_hours_new: int = None, dhcp_offer_rsv_time_seconds_new: int = None, dhcp_leasetime_static_minutes_new: int = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None, dhcp_new_leases_get_dynamic_addr_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_leasetime_dyn_days_new is not None and not (isinstance(dhcp_leasetime_dyn_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_days' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_days_new)}")
-		if dhcp_leasetime_dyn_hours_new is not None and not (isinstance(dhcp_leasetime_dyn_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_hours_new)}")
-		if dhcp_leasetime_dyn_minutes_new is not None and not (isinstance(dhcp_leasetime_dyn_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_dyn_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_dyn_minutes_new)}")
-		if dhcp_leasetime_static_days_new is not None and not (isinstance(dhcp_leasetime_static_days_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_days' of incorrect type. Expected int, got {type(dhcp_leasetime_static_days_new)}")
-		if dhcp_leasetime_static_hours_new is not None and not (isinstance(dhcp_leasetime_static_hours_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_hours' of incorrect type. Expected int, got {type(dhcp_leasetime_static_hours_new)}")
-		if dhcp_offer_rsv_time_seconds_new is not None and not (isinstance(dhcp_offer_rsv_time_seconds_new, int)):
-			raise ValueError(f"'dhcp_offer_rsv_time_seconds' of incorrect type. Expected int, got {type(dhcp_offer_rsv_time_seconds_new)}")
-		if dhcp_leasetime_static_minutes_new is not None and not (isinstance(dhcp_leasetime_static_minutes_new, int)):
-			raise ValueError(f"'dhcp_leasetime_static_minutes' of incorrect type. Expected int, got {type(dhcp_leasetime_static_minutes_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, dns_search_list_new=dns_search_list_new, admin_description_new=admin_description_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_leasetime_dyn_days_new=dhcp_leasetime_dyn_days_new, dhcp_leasetime_dyn_hours_new=dhcp_leasetime_dyn_hours_new, dhcp_leasetime_dyn_minutes_new=dhcp_leasetime_dyn_minutes_new, dhcp_leasetime_static_days_new=dhcp_leasetime_static_days_new, dhcp_leasetime_static_hours_new=dhcp_leasetime_static_hours_new, dhcp_offer_rsv_time_seconds_new=dhcp_offer_rsv_time_seconds_new, dhcp_leasetime_static_minutes_new=dhcp_leasetime_static_minutes_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, dhcp_new_leases_get_dynamic_addr_new=dhcp_new_leases_get_dynamic_addr_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Device(APIObject):
-	nc: str
-	acg: str
-	gpk: str
-	fqdn: str
-	type: str
-	is_valid: bool
-	sysdescr: str
-	uses_vlans: bool
-	description: str
-	assigned_parser: str
-	executable_parser: str
-
-	def __post_init__(self):
-		if not isinstance(self.nc, str):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(self.nc)}")
-		if not isinstance(self.acg, str):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(self.acg)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_valid, bool):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(self.is_valid)}")
-		if self.sysdescr is not None and not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.uses_vlans, bool):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(self.uses_vlans)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.assigned_parser, str):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(self.assigned_parser)}")
-		if not isinstance(self.executable_parser, str):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(self.executable_parser)}")
-
-	@staticmethod
-	def create_ta(nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.create', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.imp', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'sysdescr': sysdescr_new, 'do_import': do_import_new, 'description': description_new, 'import_data': import_data_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, sysdescr_new=sysdescr_new, do_import_new=do_import_new, description_new=description_new, import_data_new=import_data_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(nc_old: str = None, acg_old: str = None, gpk_old: str = None, fqdn_old: str = None, type_old: str = None, gpk_list_old: list = None, is_valid_old: bool = None, fqdn_list_old: list = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'nc': nc_old, 'acg': acg_old, 'gpk': gpk_old, 'fqdn': fqdn_old, 'type': type_old, 'gpk_list': gpk_list_old, 'is_valid': is_valid_old, 'fqdn_list': fqdn_list_old, 'uses_vlans': uses_vlans_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'assigned_parser': assigned_parser_old, 'executable_parser': executable_parser_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, nc_old: str = None, acg_old: str = None, gpk_old: str = None, fqdn_old: str = None, type_old: str = None, gpk_list_old: list = None, is_valid_old: bool = None, fqdn_list_old: list = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(nc_old=nc_old, acg_old=acg_old, gpk_old=gpk_old, fqdn_old=fqdn_old, type_old=type_old, gpk_list_old=gpk_list_old, is_valid_old=is_valid_old, fqdn_list_old=fqdn_list_old, uses_vlans_old=uses_vlans_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, assigned_parser_old=assigned_parser_old, executable_parser_old=executable_parser_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.update', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpIntf(APIObject):
-	gpk: str
-	l_port: str
-	ip_addr: str
-	is_vrrp: bool
-	dev_fqdn: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port, str):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(self.l_port)}")
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, l_port_old: str = None, ip_addr_old: str = None, is_vrrp_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, l_port_list_old: list = None, fetch_offset_old: int = None, ip_addr_list_old: list = None, is_secondary_old: bool = None, dev_fqdn_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if l_port_old is not None and not (isinstance(l_port_old, str)):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(l_port_old)}")
-		if ip_addr_old is not None and not (isinstance(ip_addr_old, str)):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(ip_addr_old)}")
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if l_port_list_old is not None and not (isinstance(l_port_list_old, list)):
-			raise ValueError(f"'l_port_list' of incorrect type. Expected list, got {type(l_port_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_addr_list_old is not None and not (isinstance(ip_addr_list_old, list)):
-			raise ValueError(f"'ip_addr_list' of incorrect type. Expected list, got {type(ip_addr_list_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_intf.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'l_port': l_port_old, 'ip_addr': ip_addr_old, 'is_vrrp': is_vrrp_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'l_port_list': l_port_list_old, 'fetch_offset': fetch_offset_old, 'ip_addr_list': ip_addr_list_old, 'is_secondary': is_secondary_old, 'dev_fqdn_list': dev_fqdn_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, l_port_old: str = None, ip_addr_old: str = None, is_vrrp_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, l_port_list_old: list = None, fetch_offset_old: int = None, ip_addr_list_old: list = None, is_secondary_old: bool = None, dev_fqdn_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if l_port_old is not None and not (isinstance(l_port_old, str)):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(l_port_old)}")
-		if ip_addr_old is not None and not (isinstance(ip_addr_old, str)):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(ip_addr_old)}")
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if l_port_list_old is not None and not (isinstance(l_port_list_old, list)):
-			raise ValueError(f"'l_port_list' of incorrect type. Expected list, got {type(l_port_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_addr_list_old is not None and not (isinstance(ip_addr_list_old, list)):
-			raise ValueError(f"'ip_addr_list' of incorrect type. Expected list, got {type(ip_addr_list_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, l_port_old=l_port_old, ip_addr_old=ip_addr_old, is_vrrp_old=is_vrrp_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, l_port_list_old=l_port_list_old, fetch_offset_old=fetch_offset_old, ip_addr_list_old=ip_addr_list_old, is_secondary_old=is_secondary_old, dev_fqdn_list_old=dev_fqdn_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpRoute(APIObject):
-	gpk: str
-	cidr: str
-	is_own: bool
-	metric: int
-	dev_fqdn: str
-	dest_l_port: str
-	dest_ip_addr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if self.dest_l_port is not None and not isinstance(self.dest_l_port, str):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(self.dest_l_port)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str) or isinstance(dest_ip_addr_cidr_old, ExplicitNull)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_route.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'cidr': cidr_old, 'is_own': is_own_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'dest_l_port': dest_l_port_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dest_ip_addr_cidr': dest_ip_addr_cidr_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str) or isinstance(dest_ip_addr_cidr_old, ExplicitNull)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, cidr_old=cidr_old, is_own_old=is_own_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, dest_l_port_old=dest_l_port_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dest_ip_addr_cidr_old=dest_ip_addr_cidr_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPort(APIObject):
-	gpk: str
-	lag: int
-	name: str
-	level: int
-	dev_fqdn: str
-	priority: int
-	tag_list: list
-	adm_state: int
-	description: str
-	name_sortby: str
-	ingress_vlan_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if not isinstance(self.adm_state, int):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(self.adm_state)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if self.ingress_vlan_gfk is not None and not isinstance(self.ingress_vlan_gfk, str):
-			raise ValueError(f"'ingress_vlan_gfk' of incorrect type. Expected str, got {type(self.ingress_vlan_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, level_old: int = None, dev_fqdn_old: str = None, gpk_list_old: list = None, tag_list_old: list = None, adm_state_old: int = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'level': level_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'tag_list': tag_list_old, 'adm_state': adm_state_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'has_ingress_vlan': has_ingress_vlan_old, 'tag_list_operator': tag_list_operator_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, level_old: int = None, dev_fqdn_old: str = None, gpk_list_old: list = None, tag_list_old: list = None, adm_state_old: int = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, level_old=level_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, tag_list_old=tag_list_old, adm_state_old=adm_state_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, has_ingress_vlan_old=has_ingress_vlan_old, tag_list_operator_old=tag_list_operator_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan(APIObject):
-	id: int
-	bcd: str
-	gpk: str
-	name: str
-	net_instnc: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vlan.create', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(id_old: int = None, bcd_old: str = None, gpk_old: str = None, name_old: str = None, id_list_old: list = None, gpk_list_old: list = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if id_old is not None and not (isinstance(id_old, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_old)}")
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'id': id_old, 'bcd': bcd_old, 'gpk': gpk_old, 'name': name_old, 'id_list': id_list_old, 'gpk_list': gpk_list_old, 'net_instnc': net_instnc_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'net_instnc_list': net_instnc_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, id_old: int = None, bcd_old: str = None, gpk_old: str = None, name_old: str = None, id_list_old: list = None, gpk_list_old: list = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if id_old is not None and not (isinstance(id_old, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_old)}")
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(id_old=id_old, bcd_old=bcd_old, gpk_old=gpk_old, name_old=name_old, id_list_old=id_list_old, gpk_list_old=gpk_list_old, net_instnc_old=net_instnc_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, net_instnc_list_old=net_instnc_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.update', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class L2pPort(APIObject):
-	gpk: str
-	l_port_gfk: str
-	p_port_gfk: str
-	port_order: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-		if not isinstance(self.p_port_gfk, str):
-			raise ValueError(f"'p_port_gfk' of incorrect type. Expected str, got {type(self.p_port_gfk)}")
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, l_port_gfk_list_old: list = None, p_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if p_port_gfk_list_old is not None and not (isinstance(p_port_gfk_list_old, list)):
-			raise ValueError(f"'p_port_gfk_list' of incorrect type. Expected list, got {type(p_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l2p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'l_port_gfk_list': l_port_gfk_list_old, 'p_port_gfk_list': p_port_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, l_port_gfk_list_old: list = None, p_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if p_port_gfk_list_old is not None and not (isinstance(p_port_gfk_list_old, list)):
-			raise ValueError(f"'p_port_gfk_list' of incorrect type. Expected list, got {type(p_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, l_port_gfk_list_old=l_port_gfk_list_old, p_port_gfk_list_old=p_port_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceAttributeImp(APIObject):
-	value: str
-	key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-
-@dataclass()
-class IpIntfImp(APIObject):
-	ip_addr: str
-	is_vrrp: bool
-	vrrp_id: int
-	l_port_name: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if self.vrrp_id is not None and not isinstance(self.vrrp_id, int):
-			raise ValueError(f"'vrrp_id' of incorrect type. Expected int, got {type(self.vrrp_id)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-@dataclass()
-class IpRouteImp(APIObject):
-	net: str
-	metric: int
-	is_routable: bool
-	dest_ip_addr: str
-	dest_l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.net, str):
-			raise ValueError(f"'net' of incorrect type. Expected str, got {type(self.net)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-		if self.dest_l_port_name is not None and not isinstance(self.dest_l_port_name, str):
-			raise ValueError(f"'dest_l_port_name' of incorrect type. Expected str, got {type(self.dest_l_port_name)}")
-
-@dataclass()
-class L2pPortImp(APIObject):
-	port_order: int
-	l_port_name: str
-	p_port_name: str
-	fq_module_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.p_port_name, str):
-			raise ValueError(f"'p_port_name' of incorrect type. Expected str, got {type(self.p_port_name)}")
-		if self.fq_module_name is not None and not isinstance(self.fq_module_name, str):
-			raise ValueError(f"'fq_module_name' of incorrect type. Expected str, got {type(self.fq_module_name)}")
-
-@dataclass()
-class LPortImp(APIObject):
-	lag: int
-	name: str
-	prio: int
-	status: int
-	tag_list: list
-	port_level: int
-	description: str
-	vlan_id_ingress: int
-
-	def __post_init__(self):
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.prio is not None and not isinstance(self.prio, int):
-			raise ValueError(f"'prio' of incorrect type. Expected int, got {type(self.prio)}")
-		if self.status is not None and not isinstance(self.status, int):
-			raise ValueError(f"'status' of incorrect type. Expected int, got {type(self.status)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if self.port_level is not None and not isinstance(self.port_level, int):
-			raise ValueError(f"'port_level' of incorrect type. Expected int, got {type(self.port_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.vlan_id_ingress is not None and not isinstance(self.vlan_id_ingress, int):
-			raise ValueError(f"'vlan_id_ingress' of incorrect type. Expected int, got {type(self.vlan_id_ingress)}")
-
-@dataclass()
-class VlanEgressImp(APIObject):
-	id: int
-	is_tagged: bool
-	l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-
-@dataclass()
-class VlanImp(APIObject):
-	id: int
-	name: str
-	vxlan_vni: int
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if self.name is not None and not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.vxlan_vni is not None and not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-		if self.net_instnc is not None and not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-@dataclass()
-class Module2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		return {'name': 'nd.module2device.create', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_submdls': include_all_submdls_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> list:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, include_all_submdls_new=include_all_submdls_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, dev_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'mdl_fq_name': mdl_fq_name_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, dev_fqdn_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, mdl_fq_name_old: str = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if mdl_fq_name_old is not None and not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, mdl_fq_name_old=mdl_fq_name_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> dict:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.update', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> list:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTa(APIObject):
-	gpk: str
-	owner: str
-	is_own: bool
-	position: int
-	is_active: bool
-	is_working: bool
-	parent_gfk: str
-	mail_on_error: bool
-	last_devimp_ts: str
-	last_devimp_msg: str
-	mail_on_success: bool
-	preserve_on_error: bool
-	last_devimp_success: bool
-	preserve_on_success: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.owner, str):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(self.owner)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_working, bool):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(self.is_working)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.mail_on_error, bool):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(self.mail_on_error)}")
-		if self.last_devimp_ts is not None and not isinstance(self.last_devimp_ts, str):
-			raise ValueError(f"'last_devimp_ts' of incorrect type. Expected str, got {type(self.last_devimp_ts)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if not isinstance(self.mail_on_success, bool):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(self.mail_on_success)}")
-		if not isinstance(self.preserve_on_error, bool):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(self.preserve_on_error)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.preserve_on_success, bool):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(self.preserve_on_success)}")
-
-	@staticmethod
-	def bulk_delete_ta(is_active_old: bool) -> dict:
-		if not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-
-		return {'name': 'nd.diq_ta.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, is_active_old: bool) -> list:
-		if not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(is_active_old=is_active_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		return {'name': 'nd.diq_ta.create', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, owner_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'owner': owner_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'position': position_old, 'is_active': is_active_old, 'is_working': is_working_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, owner_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, owner_old=owner_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, position_old=position_old, is_active_old=is_active_old, is_working_old=is_working_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.update', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTaEntry(APIObject):
-	gpk: str
-	dev_nc: str
-	dev_acg: str
-	do_save: bool
-	dev_fqdn: str
-	dev_type: str
-	do_parse: bool
-	do_import: bool
-	dev_parser: str
-	diq_ta_gfk: str
-	diq_ta_is_own: bool
-	dev_description: str
-	last_devimp_msg: str
-	upload_filename: str
-	output_verbosity: bool
-	dev_attributes_dict: dict
-	last_devimp_success: bool
-	rplc_charset_errors: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_nc, str):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(self.dev_nc)}")
-		if not isinstance(self.dev_acg, str):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(self.dev_acg)}")
-		if not isinstance(self.do_save, bool):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(self.do_save)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.dev_type, str):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(self.dev_type)}")
-		if not isinstance(self.do_parse, bool):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(self.do_parse)}")
-		if not isinstance(self.do_import, bool):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(self.do_import)}")
-		if not isinstance(self.dev_parser, str):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(self.dev_parser)}")
-		if not isinstance(self.diq_ta_gfk, str):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(self.diq_ta_gfk)}")
-		if not isinstance(self.diq_ta_is_own, bool):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(self.diq_ta_is_own)}")
-		if self.dev_description is not None and not isinstance(self.dev_description, str):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(self.dev_description)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if self.upload_filename is not None and not isinstance(self.upload_filename, str):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(self.upload_filename)}")
-		if not isinstance(self.output_verbosity, bool):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(self.output_verbosity)}")
-		if not isinstance(self.dev_attributes_dict, dict):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(self.dev_attributes_dict)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.rplc_charset_errors, bool):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(self.rplc_charset_errors)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		return {'name': 'nd.diq_ta_entry.create', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, diq_ta_gfk_old: str) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, dev_fqdn_old: str = None, gpk_list_old: list = None, diq_ta_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, diq_ta_is_own_old: bool = None, diq_ta_gfk_list_old: list = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if diq_ta_gfk_old is not None and not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if diq_ta_gfk_list_old is not None and not (isinstance(diq_ta_gfk_list_old, list)):
-			raise ValueError(f"'diq_ta_gfk_list' of incorrect type. Expected list, got {type(diq_ta_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta_entry.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'diq_ta_gfk': diq_ta_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'diq_ta_is_own': diq_ta_is_own_old, 'diq_ta_gfk_list': diq_ta_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, dev_fqdn_old: str = None, gpk_list_old: list = None, diq_ta_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, diq_ta_is_own_old: bool = None, diq_ta_gfk_list_old: list = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if diq_ta_gfk_old is not None and not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if diq_ta_gfk_list_old is not None and not (isinstance(diq_ta_gfk_list_old, list)):
-			raise ValueError(f"'diq_ta_gfk_list' of incorrect type. Expected list, got {type(diq_ta_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, diq_ta_gfk_old=diq_ta_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, diq_ta_is_own_old=diq_ta_is_own_old, diq_ta_gfk_list_old=diq_ta_gfk_list_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.update', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vlan_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vlan_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'vlan_gfk_list': vlan_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vlan_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, vlan_gfk_list_old=vlan_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan(APIObject):
-	bcd: str
-	gpk: str
-	vni: int
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vxlan.create', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(vni_old: int) -> dict:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, vni_old: int) -> list:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, vni_old: int = None, gpk_list_old: list = None, vni_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if vni_old is not None and not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if vni_list_old is not None and not (isinstance(vni_list_old, list)):
-			raise ValueError(f"'vni_list' of incorrect type. Expected list, got {type(vni_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'vni': vni_old, 'gpk_list': gpk_list_old, 'vni_list': vni_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, vni_old: int = None, gpk_list_old: list = None, vni_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if vni_old is not None and not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if vni_list_old is not None and not (isinstance(vni_list_old, list)):
-			raise ValueError(f"'vni_list' of incorrect type. Expected list, got {type(vni_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, vni_old=vni_old, gpk_list_old=gpk_list_old, vni_list_old=vni_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.update', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vxlan_vni: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vxlan_vni_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vxlan_vni_list_old is not None and not (isinstance(vxlan_vni_list_old, list)):
-			raise ValueError(f"'vxlan_vni_list' of incorrect type. Expected list, got {type(vxlan_vni_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'vxlan_vni_list': vxlan_vni_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vxlan_vni_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vxlan_vni_list_old is not None and not (isinstance(vxlan_vni_list_old, list)):
-			raise ValueError(f"'vxlan_vni_list' of incorrect type. Expected list, got {type(vxlan_vni_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, vxlan_vni_list_old=vxlan_vni_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2group(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def bulk_update_ta(bcd_name_list_new: list = None, group_name_list_new: list = None, bcd_name_old: str = None, group_name_old: str = None, bcd_name_list_old: list = None, group_name_list_old: list = None) -> dict:
-		if bcd_name_list_new is not None and not (isinstance(bcd_name_list_new, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		return {'name': 'nd.bcd2group.bulk_update', 'new': _denullify_dict({'bcd_name_list': bcd_name_list_new, 'group_name_list': group_name_list_new}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'group_name': group_name_old, 'bcd_name_list': bcd_name_list_old, 'group_name_list': group_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, bcd_name_list_new: list = None, group_name_list_new: list = None, bcd_name_old: str = None, group_name_old: str = None, bcd_name_list_old: list = None, group_name_list_old: list = None) -> list:
-		if bcd_name_list_new is not None and not (isinstance(bcd_name_list_new, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_new)}")
-		if group_name_list_new is not None and not (isinstance(group_name_list_new, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_new)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if group_name_old is not None and not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(bcd_name_list_new=bcd_name_list_new, group_name_list_new=group_name_list_new, bcd_name_old=bcd_name_old, group_name_old=group_name_old, bcd_name_list_old=bcd_name_list_old, group_name_list_old=group_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, group_name_new: str) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'nd.bcd2group.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, group_name_new: str) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, group_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'nd.bcd2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, group_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'bcd_name_list': bcd_name_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, bcd_name_list_old=bcd_name_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2ou(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'nd.bcd2ou.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, bcd_name_list_old: list = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'is_own': is_own_old, 'bcd_name': bcd_name_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'bcd_name_list': bcd_name_list_old, 'ou_short_name': ou_short_name_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, bcd_name_list_old: list = None, ou_short_name_old: str = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, is_own_old=is_own_old, bcd_name_old=bcd_name_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, bcd_name_list_old=bcd_name_list_old, ou_short_name_old=ou_short_name_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VxlanImp(APIObject):
-	vni: int
-
-	def __post_init__(self):
-		if self.vni is not None and not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
diff --git a/4.1/golang/ndcfg.py b/4.1/golang/ndcfg.py
deleted file mode 100644
index 3cdb943..0000000
--- a/4.1/golang/ndcfg.py
+++ /dev/null
@@ -1,3739 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Module2slotType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	required_slot_width: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.required_slot_width, int):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(self.required_slot_width)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		return {'name': 'ndcfg.module2slot_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'slot_type': slot_type_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, slot_type_old=slot_type_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleTypeClass(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.module_type_class.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortProto(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_proto.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort2moduleType(APIObject):
-	gpk: str
-	int_gfk: str
-	port_type: str
-	port_count: int
-	port_name1: str
-	port_proto: str
-	port_speed: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	port_inc_count: int
-	port_type_group: str
-	port_type_order: int
-	port_name_prefix: str
-	port_name_suffix: str
-	port_name_varprfx: str
-	port_name_varprfx_join_dl: str
-	port_name_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.int_gfk, str):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(self.int_gfk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_count, int):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(self.port_count)}")
-		if self.port_name1 is not None and not isinstance(self.port_name1, str):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(self.port_name1)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.port_inc_count, int):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(self.port_inc_count)}")
-		if not isinstance(self.port_type_group, str):
-			raise ValueError(f"'port_type_group' of incorrect type. Expected str, got {type(self.port_type_group)}")
-		if not isinstance(self.port_type_order, int):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(self.port_type_order)}")
-		if self.port_name_prefix is not None and not isinstance(self.port_name_prefix, str):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(self.port_name_prefix)}")
-		if self.port_name_suffix is not None and not isinstance(self.port_name_suffix, str):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(self.port_name_suffix)}")
-		if self.port_name_varprfx is not None and not isinstance(self.port_name_varprfx, str):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(self.port_name_varprfx)}")
-		if self.port_name_varprfx_join_dl is not None and not isinstance(self.port_name_varprfx_join_dl, str):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_join_dl)}")
-		if self.port_name_varprfx_split_dl is not None and not isinstance(self.port_name_varprfx_split_dl, str):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.p_port2module_type.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, port_type_group_list_old: list = None, port_type_order_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if port_type_group_list_old is not None and not (isinstance(port_type_group_list_old, list)):
-			raise ValueError(f"'port_type_group_list' of incorrect type. Expected list, got {type(port_type_group_list_old)}")
-		if port_type_order_list_old is not None and not (isinstance(port_type_order_list_old, list)):
-			raise ValueError(f"'port_type_order_list' of incorrect type. Expected list, got {type(port_type_order_list_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'port_type_list': port_type_list_old, 'port_proto_list': port_proto_list_old, 'port_speed_list': port_speed_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'port_type_group_list': port_type_group_list_old, 'port_type_order_list': port_type_order_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, port_type_group_list_old: list = None, port_type_order_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if port_type_group_list_old is not None and not (isinstance(port_type_group_list_old, list)):
-			raise ValueError(f"'port_type_group_list' of incorrect type. Expected list, got {type(port_type_group_list_old)}")
-		if port_type_order_list_old is not None and not (isinstance(port_type_order_list_old, list)):
-			raise ValueError(f"'port_type_order_list' of incorrect type. Expected list, got {type(port_type_order_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, port_type_list_old=port_type_list_old, port_proto_list_old=port_proto_list_old, port_speed_list_old=port_speed_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, port_type_group_list_old=port_type_group_list_old, port_type_order_list_old=port_type_order_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.update', 'new': _denullify_dict({'int_gfk': int_gfk_new, 'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(int_gfk_new=int_gfk_new, port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	subslot_count: int
-	subslot_name1: str
-	num_mode_level: int
-	subslot_prefix: str
-	subslot_inc_count: int
-	subslot_type_order: int
-	backplane_port_descr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.subslot_count, int):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(self.subslot_count)}")
-		if self.subslot_name1 is not None and not isinstance(self.subslot_name1, str):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(self.subslot_name1)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if self.subslot_prefix is not None and not isinstance(self.subslot_prefix, str):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(self.subslot_prefix)}")
-		if not isinstance(self.subslot_inc_count, int):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(self.subslot_inc_count)}")
-		if not isinstance(self.subslot_type_order, int):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(self.subslot_type_order)}")
-		if self.backplane_port_descr is not None and not isinstance(self.backplane_port_descr, str):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(self.backplane_port_descr)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		return {'name': 'ndcfg.slot2module_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'slot_type': slot_type_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, slot_type_old=slot_type_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortType(APIObject):
-	gpk: str
-	name: str
-	is_internal: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_internal_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		return {'name': 'ndcfg.p_port_type.create', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_internal_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_internal_new=is_internal_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_internal_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.update', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_internal_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_internal_new=is_internal_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	slot_width: int
-	submt_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.slot_width, int):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(self.slot_width)}")
-		if not isinstance(self.submt_count, int):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(self.submt_count)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str, slot_width_new: int = 1) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		return {'name': 'ndcfg.slot_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str, slot_width_new: int = 1) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, cls_old: str = None, gpk_list_old: list = None, name_list_old: list = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'cls': cls_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'slot_width': slot_width_old, 'fetch_limit': fetch_limit_old, 'submt_count': submt_count_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, cls_old: str = None, gpk_list_old: list = None, name_list_old: list = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, cls_old=cls_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, slot_width_old=slot_width_old, fetch_limit_old=fetch_limit_old, submt_count_old=submt_count_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeGroup(APIObject):
-	gpk: str
-	name: str
-	is_permanent: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_permanent, bool):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(self.is_permanent)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_permanent_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		return {'name': 'ndcfg.p_port_type_group.create', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_permanent_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_permanent_new=is_permanent_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_permanent': is_permanent_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_permanent_old=is_permanent_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_permanent_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.update', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_permanent_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_permanent_new=is_permanent_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetInstnc(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_instnc.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeData(APIObject):
-	gpk: str
-	port_type: str
-	port_group: str
-	port_proto: str
-	port_speed: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_group, str):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(self.port_group)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		return {'name': 'ndcfg.p_port_type_data.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(port_type_old: str, port_proto_old: str, port_speed_old: str) -> dict:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str) -> list:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'port_type_list': port_type_list_old, 'port_proto_list': port_proto_list_old, 'port_speed_list': port_speed_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, port_type_list_old=port_type_list_old, port_proto_list_old=port_proto_list_old, port_speed_list_old=port_speed_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> dict:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.update', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> list:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	is_child: bool
-	is_active: bool
-	is_parent: bool
-	has_unq_name: bool
-	is_forwarding: bool
-	is_loc_depdnt: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_forwarding, bool):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(self.is_forwarding)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		return {'name': 'ndcfg.module_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, cls_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'cls': cls_old, 'gpk_list': gpk_list_old, 'is_child': is_child_old, 'is_active': is_active_old, 'is_parent': is_parent_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'has_unq_name': has_unq_name_old, 'is_forwarding': is_forwarding_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, cls_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, cls_old=cls_old, gpk_list_old=gpk_list_old, is_child_old=is_child_old, is_active_old=is_active_old, is_parent_old=is_parent_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, has_unq_name_old=has_unq_name_old, is_forwarding_old=is_forwarding_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceType(APIObject):
-	gpk: str
-	name: str
-	description: str
-	nw_fwd_level: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.nw_fwd_level, int):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(self.nw_fwd_level)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str, nw_fwd_level_new: int) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str, nw_fwd_level_new: int) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.device_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.device_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'nw_fwd_level': nw_fwd_level_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, nw_fwd_level_old=nw_fwd_level_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser(APIObject):
-	gpk: str
-	name: str
-	exec_args: dict
-	description: str
-	access_group: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.exec_args, dict):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(self.exec_args)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.access_group, str):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(self.access_group)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		return {'name': 'ndcfg.parser.create', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'access_group': access_group_old, 'fetch_offset': fetch_offset_old, 'is_executable': is_executable_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, access_group_old=access_group_old, fetch_offset_old=fetch_offset_old, is_executable_old=is_executable_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.update', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NumMode(APIObject):
-	gpk: str
-	name: str
-	level: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, level_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if level_list_old is not None and not (isinstance(level_list_old, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.num_mode.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'level_list': level_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, level_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if level_list_old is not None and not (isinstance(level_list_old, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, level_list_old=level_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortSpeed(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_speed.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdCateg(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.bcd_categ.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdSeclvl(APIObject):
-	gpk: str
-	value: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, int):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(self.value)}")
-
-	@staticmethod
-	def create_ta(value_new: int) -> dict:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.create', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: int) -> list:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: int) -> dict:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: int) -> list:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, value_old: int = None, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if value_old is not None and not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'value': value_old, 'gpk_list': gpk_list_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, value_old: int = None, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if value_old is not None and not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, value_old=value_old, gpk_list_old=gpk_list_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: int, value_new: int = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: int, value_new: int = None) -> list:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd2instnc(APIObject):
-	gpk: str
-	net_cmpnd: str
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.net_cmpnd, str):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(self.net_cmpnd)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-	@staticmethod
-	def create_ta(net_cmpnd_new: str, net_instnc_new: str) -> dict:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.create', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, net_cmpnd_new: str, net_instnc_new: str) -> list:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(net_cmpnd_old: str, net_instnc_old: str) -> dict:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str) -> list:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, net_cmpnd_old: str = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_cmpnd_list_old: list = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if net_cmpnd_old is not None and not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_cmpnd_list_old is not None and not (isinstance(net_cmpnd_list_old, list)):
-			raise ValueError(f"'net_cmpnd_list' of incorrect type. Expected list, got {type(net_cmpnd_list_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'net_cmpnd_list': net_cmpnd_list_old, 'net_instnc_list': net_instnc_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, net_cmpnd_old: str = None, net_instnc_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_cmpnd_list_old: list = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if net_cmpnd_old is not None and not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if net_instnc_old is not None and not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_cmpnd_list_old is not None and not (isinstance(net_cmpnd_list_old, list)):
-			raise ValueError(f"'net_cmpnd_list' of incorrect type. Expected list, got {type(net_cmpnd_list_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, net_cmpnd_list_old=net_cmpnd_list_old, net_instnc_list_old=net_instnc_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> dict:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.update', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> list:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser2sysdescr(APIObject):
-	gpk: str
-	parser: str
-	sysdescr: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.parser, str):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(self.parser)}")
-		if not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(parser_new: str, sysdescr_new: str) -> dict:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.create', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, parser_new: str, sysdescr_new: str) -> list:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(sysdescr_old: str) -> dict:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, sysdescr_old: str) -> list:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, parser_old: str = None, gpk_list_old: list = None, sysdescr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, sysdescr_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sysdescr_old is not None and not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if sysdescr_list_old is not None and not (isinstance(sysdescr_list_old, list)):
-			raise ValueError(f"'sysdescr_list' of incorrect type. Expected list, got {type(sysdescr_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'parser': parser_old, 'gpk_list': gpk_list_old, 'sysdescr': sysdescr_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'sysdescr_list': sysdescr_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, parser_old: str = None, gpk_list_old: list = None, sysdescr_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, sysdescr_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sysdescr_old is not None and not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if sysdescr_list_old is not None and not (isinstance(sysdescr_list_old, list)):
-			raise ValueError(f"'sysdescr_list' of incorrect type. Expected list, got {type(sysdescr_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, parser_old=parser_old, gpk_list_old=gpk_list_old, sysdescr_old=sysdescr_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, sysdescr_list_old=sysdescr_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> dict:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.update', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> list:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotTypeClass(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.slot_type_class.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleTypeTree(APIObject):
-	gpk: str
-	slot_type: str
-	parent_gfk: str
-	tree_level: int
-	module_type: str
-	slot_varname1: str
-	subport_prefix: str
-	subport_varprfx: str
-	subport_varname1: str
-	hierarchy_gfk_list: list
-	subport_varprfx_join_dl: str
-	subport_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if self.slot_varname1 is not None and not isinstance(self.slot_varname1, str):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(self.slot_varname1)}")
-		if self.subport_prefix is not None and not isinstance(self.subport_prefix, str):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(self.subport_prefix)}")
-		if self.subport_varprfx is not None and not isinstance(self.subport_varprfx, str):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(self.subport_varprfx)}")
-		if self.subport_varname1 is not None and not isinstance(self.subport_varname1, str):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(self.subport_varname1)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if self.subport_varprfx_join_dl is not None and not isinstance(self.subport_varprfx_join_dl, str):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_join_dl)}")
-		if self.subport_varprfx_split_dl is not None and not isinstance(self.subport_varprfx_split_dl, str):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, parent_gfk_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if parent_gfk_list_old is not None and not (isinstance(parent_gfk_list_old, list)):
-			raise ValueError(f"'parent_gfk_list' of incorrect type. Expected list, got {type(parent_gfk_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'slot_type': slot_type_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'module_type': module_type_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'parent_gfk_list': parent_gfk_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, slot_type_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, module_type_old: str = None, fetch_offset_old: int = None, slot_type_list_old: list = None, parent_gfk_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if slot_type_old is not None and not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if module_type_old is not None and not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if parent_gfk_list_old is not None and not (isinstance(parent_gfk_list_old, list)):
-			raise ValueError(f"'parent_gfk_list' of incorrect type. Expected list, got {type(parent_gfk_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, slot_type_old=slot_type_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, module_type_old=module_type_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, parent_gfk_list_old=parent_gfk_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType(APIObject):
-	gpk: str
-	is_child: bool
-	is_parent: bool
-	short_name: str
-	force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.force_is_child, bool):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(self.force_is_child)}")
-
-	@staticmethod
-	def create_ta(is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> dict:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		return {'name': 'ndcfg.site_type.create', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> list:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_parent_old: bool = None, short_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.site_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'is_child': is_child_old, 'is_parent': is_parent_old, 'short_name': short_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'force_is_child': force_is_child_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_parent_old: bool = None, short_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, is_child_old=is_child_old, is_parent_old=is_parent_old, short_name_old=short_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, force_is_child_old=force_is_child_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> dict:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.update', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> list:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType2type(APIObject):
-	gpk: str
-	child_short_name: str
-	parent_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.child_short_name, str):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(self.child_short_name)}")
-		if not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-
-	@staticmethod
-	def create_ta(child_short_name_new: str, parent_short_name_new: str) -> dict:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'ndcfg.site_type2type.create', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, child_short_name_new: str, parent_short_name_new: str) -> list:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(child_short_name_old: str, parent_short_name_old: str) -> dict:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str) -> list:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, child_short_name_old: str = None, parent_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, child_short_name_list_old: list = None, parent_short_name_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if child_short_name_old is not None and not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if parent_short_name_old is not None and not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if child_short_name_list_old is not None and not (isinstance(child_short_name_list_old, list)):
-			raise ValueError(f"'child_short_name_list' of incorrect type. Expected list, got {type(child_short_name_list_old)}")
-		if parent_short_name_list_old is not None and not (isinstance(parent_short_name_list_old, list)):
-			raise ValueError(f"'parent_short_name_list' of incorrect type. Expected list, got {type(parent_short_name_list_old)}")
-
-		return {'name': 'ndcfg.site_type2type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'child_short_name_list': child_short_name_list_old, 'parent_short_name_list': parent_short_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, child_short_name_old: str = None, parent_short_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, child_short_name_list_old: list = None, parent_short_name_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if child_short_name_old is not None and not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if parent_short_name_old is not None and not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if child_short_name_list_old is not None and not (isinstance(child_short_name_list_old, list)):
-			raise ValueError(f"'child_short_name_list' of incorrect type. Expected list, got {type(child_short_name_list_old)}")
-		if parent_short_name_list_old is not None and not (isinstance(parent_short_name_list_old, list)):
-			raise ValueError(f"'parent_short_name_list' of incorrect type. Expected list, got {type(parent_short_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, child_short_name_list_old=child_short_name_list_old, parent_short_name_list_old=parent_short_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> dict:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.update', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> list:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPortTag(APIObject):
-	gpk: str
-	value: str
-	level_list: list
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.level_list, list):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(self.level_list)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.l_port_tag.create', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.update', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/nm.py b/4.1/golang/nm.py
deleted file mode 100644
index cfcf4e1..0000000
--- a/4.1/golang/nm.py
+++ /dev/null
@@ -1,66 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class AccessGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nm.access_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'name': name_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, name_old: str = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, name_old=name_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/org.py b/4.1/golang/org.py
deleted file mode 100644
index 4d294e3..0000000
--- a/4.1/golang/org.py
+++ /dev/null
@@ -1,342 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class UnitType(APIObject):
-	gpk: str
-	name: str
-	position: int
-	short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, short_name_new: str, position_new: int = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'org.unit_type.create', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, short_name_new: str, position_new: int = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.update', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Unit(APIObject):
-	gpk: str
-	name: str
-	type: str
-	parent_gfk: str
-	short_name: str
-	tree_level: int
-	sub_position: int
-	is_mgr_assignable: bool
-	parent_short_name: str
-	hierarchy_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.sub_position, int):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(self.sub_position)}")
-		if not isinstance(self.is_mgr_assignable, bool):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(self.is_mgr_assignable)}")
-		if self.parent_short_name is not None and not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'org.unit.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str, merge_short_name_new: str = None) -> dict:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.delete', 'new': _denullify_dict({'merge_short_name': merge_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str, merge_short_name_new: str = None) -> list:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(merge_short_name_new=merge_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, type_old: str = None, gpk_list_old: list = None, short_name_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str) or isinstance(short_name_old, ExplicitNull)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'type': type_old, 'gpk_list': gpk_list_old, 'short_name': short_name_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'is_mgr_assignable': is_mgr_assignable_old, 'short_name_regexp': short_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, type_old: str = None, gpk_list_old: list = None, short_name_old: str = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if short_name_old is not None and not (isinstance(short_name_old, str) or isinstance(short_name_old, ExplicitNull)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, type_old=type_old, gpk_list_old=gpk_list_old, short_name_old=short_name_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, is_mgr_assignable_old=is_mgr_assignable_old, short_name_regexp_old=short_name_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/structs.go b/4.1/golang/structs.go
new file mode 100644
index 0000000..9bc22ee
--- /dev/null
+++ b/4.1/golang/structs.go
@@ -0,0 +1,1357 @@
+import "net"
+
+type NdcfgModule2slotType struct {
+	Gpk               string `mapstructure:"gpk"`
+	SlotType          string `mapstructure:"slot_type"`
+	ModuleType        string `mapstructure:"module_type"`
+	NumModeName       string `mapstructure:"num_mode_name"`
+	NumModeLevel      int64  `mapstructure:"num_mode_level"`
+	RequiredSlotWidth int64  `mapstructure:"required_slot_width"`
+}
+
+type NdcfgModuleTypeClass struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type DnsZone struct {
+	Gpk                      string  `mapstructure:"gpk"`
+	Fqdn                     string  `mapstructure:"fqdn"`
+	IsOwn                    bool    `mapstructure:"is_own"`
+	IsApex                   bool    `mapstructure:"is_apex"`
+	Nsec3Salt                *string `mapstructure:"nsec3_salt"`
+	Description              *string `mapstructure:"description"`
+	NsSetName                *string `mapstructure:"ns_set_name"`
+	Nsec3Itcount             int64   `mapstructure:"nsec3_itcount"`
+	DnssecDoSign             bool    `mapstructure:"dnssec_do_sign"`
+	SoaDataRetry             *uint32 `mapstructure:"soa_data_retry"`
+	Nsec3HashAlgo            int64   `mapstructure:"nsec3_hash_algo"`
+	SoaDataExpire            *uint32 `mapstructure:"soa_data_expire"`
+	SoaDataSerial            uint32  `mapstructure:"soa_data_serial"`
+	SoaDataMinimum           *uint32 `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh           *uint32 `mapstructure:"soa_data_refresh"`
+	DnssecDoEnforce          bool    `mapstructure:"dnssec_do_enforce"`
+	DfltTtlRrtDbext          uint32  `mapstructure:"dflt_ttl_rrt_dbext"`
+	DfltTtlRrtDbint          uint32  `mapstructure:"dflt_ttl_rrt_dbint"`
+	SoaDataHostmaster        *string `mapstructure:"soa_data_hostmaster"`
+	DnssecKskRrsArePublished bool    `mapstructure:"dnssec_ksk_rrs_are_published"`
+}
+
+type NdcfgPPortProto struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlSystem struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr struct {
+	Gpk                   string  `mapstructure:"gpk"`
+	Email                 *string `mapstructure:"email"`
+	IsOwn                 bool    `mapstructure:"is_own"`
+	IsSub                 bool    `mapstructure:"is_sub"`
+	IsSvc                 bool    `mapstructure:"is_svc"`
+	SubId                 *string `mapstructure:"sub_id"`
+	SvcId                 *string `mapstructure:"svc_id"`
+	IsSelf                bool    `mapstructure:"is_self"`
+	LastName              *string `mapstructure:"last_name"`
+	FirstName             *string `mapstructure:"first_name"`
+	KitStatus             int64   `mapstructure:"kit_status"`
+	LoginName             string  `mapstructure:"login_name"`
+	Description           *string `mapstructure:"description"`
+	IsDeletable           bool    `mapstructure:"is_deletable"`
+	IsAdmLocked           bool    `mapstructure:"is_adm_locked"`
+	ParentLoginName       string  `mapstructure:"parent_login_name"`
+	AllowDataManipulation bool    `mapstructure:"allow_data_manipulation"`
+}
+
+type NdIpSubnet struct {
+	Bcd                 string      `mapstructure:"bcd"`
+	Gpk                 string      `mapstructure:"gpk"`
+	Cidr                net.IPNet   `mapstructure:"cidr"`
+	Type                string      `mapstructure:"type"`
+	IsOwn               bool        `mapstructure:"is_own"`
+	IsPrivate           bool        `mapstructure:"is_private"`
+	Description         *string     `mapstructure:"description"`
+	IsRoutable          bool        `mapstructure:"is_routable"`
+	IsContainer         bool        `mapstructure:"is_container"`
+	DefaultGateway      *net.IPAddr `mapstructure:"default_gateway"`
+	DnsAddrRrCount      int64       `mapstructure:"dns_addr_rr_count"`
+	DhcpIpAddrCount     int64       `mapstructure:"dhcp_ip_addr_count"`
+	DnsAddrRsvCount     int64       `mapstructure:"dns_addr_rsv_count"`
+	IsIanaRegistered    bool        `mapstructure:"is_iana_registered"`
+	AutoCreateIpAddress bool        `mapstructure:"auto_create_ip_address"`
+}
+
+type NdcfgPPort2moduleType struct {
+	Gpk                    string  `mapstructure:"gpk"`
+	IntGfk                 string  `mapstructure:"int_gfk"`
+	PortType               string  `mapstructure:"port_type"`
+	PortCount              int64   `mapstructure:"port_count"`
+	PortName1              *string `mapstructure:"port_name1"`
+	PortProto              string  `mapstructure:"port_proto"`
+	PortSpeed              string  `mapstructure:"port_speed"`
+	ModuleType             string  `mapstructure:"module_type"`
+	NumModeName            string  `mapstructure:"num_mode_name"`
+	NumModeLevel           int64   `mapstructure:"num_mode_level"`
+	PortIncCount           int64   `mapstructure:"port_inc_count"`
+	PortTypeGroup          string  `mapstructure:"port_type_group"`
+	PortTypeOrder          int64   `mapstructure:"port_type_order"`
+	PortNamePrefix         *string `mapstructure:"port_name_prefix"`
+	PortNameSuffix         *string `mapstructure:"port_name_suffix"`
+	PortNameVarprfx        *string `mapstructure:"port_name_varprfx"`
+	PortNameVarprfxJoinDl  *string `mapstructure:"port_name_varprfx_join_dl"`
+	PortNameVarprfxSplitDl *string `mapstructure:"port_name_varprfx_split_dl"`
+}
+
+type CntlError struct {
+	Gpk    string `mapstructure:"gpk"`
+	Code   int64  `mapstructure:"code"`
+	Type   int64  `mapstructure:"type"`
+	System string `mapstructure:"system"`
+}
+
+type DnsFqdn struct {
+	Gpk                        string    `mapstructure:"gpk"`
+	Type                       string    `mapstructure:"type"`
+	Zone                       string    `mapstructure:"zone"`
+	Label                      *string   `mapstructure:"label"`
+	Value                      string    `mapstructure:"value"`
+	HasRr                      bool      `mapstructure:"has_rr"`
+	IsOwn                      bool      `mapstructure:"is_own"`
+	ParentGfk                  *string   `mapstructure:"parent_gfk"`
+	TreeLevel                  int32     `mapstructure:"tree_level"`
+	ValueIdna                  string    `mapstructure:"value_idna"`
+	Description                *string   `mapstructure:"description"`
+	ParentValue                *string   `mapstructure:"parent_value"`
+	TypeIsDhcp                 bool      `mapstructure:"type_is_dhcp"`
+	TypeIsHost                 bool      `mapstructure:"type_is_host"`
+	TypeRadType                int64     `mapstructure:"type_rad_type"`
+	SubFqdnCount               int64     `mapstructure:"sub_fqdn_count"`
+	TypeIsWildcard             bool      `mapstructure:"type_is_wildcard"`
+	HierarchyGfkList           []string  `mapstructure:"hierarchy_gfk_list"`
+	TypeIsNonterminal          bool      `mapstructure:"type_is_nonterminal"`
+	IsEmptyNonterminal         bool      `mapstructure:"is_empty_nonterminal"`
+	RrChainTargetIsOwn         bool      `mapstructure:"rr_chain_target_is_own"`
+	RrChainTargetSubnetGfkList *[]string `mapstructure:"rr_chain_target_subnet_gfk_list"`
+}
+
+type NdcfgSlot2moduleType struct {
+	Gpk                string  `mapstructure:"gpk"`
+	SlotType           string  `mapstructure:"slot_type"`
+	ModuleType         string  `mapstructure:"module_type"`
+	NumModeName        string  `mapstructure:"num_mode_name"`
+	SubslotCount       int64   `mapstructure:"subslot_count"`
+	SubslotName1       *string `mapstructure:"subslot_name1"`
+	NumModeLevel       int64   `mapstructure:"num_mode_level"`
+	SubslotPrefix      *string `mapstructure:"subslot_prefix"`
+	SubslotIncCount    int64   `mapstructure:"subslot_inc_count"`
+	SubslotTypeOrder   int64   `mapstructure:"subslot_type_order"`
+	BackplanePortDescr *string `mapstructure:"backplane_port_descr"`
+}
+
+type NdSlot struct {
+	Gpk            string  `mapstructure:"gpk"`
+	Bldg           *string `mapstructure:"bldg"`
+	Room           *string `mapstructure:"room"`
+	Type           string  `mapstructure:"type"`
+	Label          string  `mapstructure:"label"`
+	FqName         string  `mapstructure:"fq_name"`
+	Description    *string `mapstructure:"description"`
+	LabelSortby    string  `mapstructure:"label_sortby"`
+	ParentFqModule string  `mapstructure:"parent_fq_module"`
+	SubModuleCount int64   `mapstructure:"sub_module_count"`
+}
+
+type NdFloor struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+	NameSortby  int64   `mapstructure:"name_sortby"`
+}
+
+type NdRoom struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Bldg        string  `mapstructure:"bldg"`
+	Name        string  `mapstructure:"name"`
+	Floor       string  `mapstructure:"floor"`
+	Number      string  `mapstructure:"number"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlColumn struct {
+	Gpk                            string  `mapstructure:"gpk"`
+	Name                           string  `mapstructure:"name"`
+	IsWapi                         bool    `mapstructure:"is_wapi"`
+	RefGfk                         *string `mapstructure:"ref_gfk"`
+	RefName                        *string `mapstructure:"ref_name"`
+	DataType                       string  `mapstructure:"data_type"`
+	TableGfk                       string  `mapstructure:"table_gfk"`
+	TableName                      string  `mapstructure:"table_name"`
+	IsNullable                     bool    `mapstructure:"is_nullable"`
+	IsRequired                     bool    `mapstructure:"is_required"`
+	IsDeprecated                   bool    `mapstructure:"is_deprecated"`
+	AttributeName                  string  `mapstructure:"attribute_name"`
+	RefTableName                   *string `mapstructure:"ref_table_name"`
+	RefTargetGfk                   *string `mapstructure:"ref_target_gfk"`
+	IsOtGlobalRef                  bool    `mapstructure:"is_ot_global_ref"`
+	ObjectTypeFqName               string  `mapstructure:"object_type_fq_name"`
+	PgAttributeExists              bool    `mapstructure:"pg_attribute_exists"`
+	UseRefColumnLanguageAttributes bool    `mapstructure:"use_ref_column_language_attributes"`
+}
+
+type NdModule struct {
+	Ap                     *string  `mapstructure:"ap"`
+	Gpk                    string   `mapstructure:"gpk"`
+	Bldg                   *string  `mapstructure:"bldg"`
+	Room                   *string  `mapstructure:"room"`
+	Type                   string   `mapstructure:"type"`
+	Label                  string   `mapstructure:"label"`
+	FqName                 string   `mapstructure:"fq_name"`
+	IsChild                bool     `mapstructure:"is_child"`
+	RootGfk                string   `mapstructure:"root_gfk"`
+	IsActive               bool     `mapstructure:"is_active"`
+	TreeLevel              int32    `mapstructure:"tree_level"`
+	Description            *string  `mapstructure:"description"`
+	HasUnqName             bool     `mapstructure:"has_unq_name"`
+	IsLocDepdnt            bool     `mapstructure:"is_loc_depdnt"`
+	ParentFqSlot           *string  `mapstructure:"parent_fq_slot"`
+	ModuleHierarchyGfkList []string `mapstructure:"module_hierarchy_gfk_list"`
+}
+
+type NdcfgPPortType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	IsInternal bool   `mapstructure:"is_internal"`
+}
+
+type NdcfgSlotType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	Class      string `mapstructure:"class"`
+	SlotWidth  int64  `mapstructure:"slot_width"`
+	SubmtCount int64  `mapstructure:"submt_count"`
+}
+
+type NdcfgPPortTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	IsPermanent bool   `mapstructure:"is_permanent"`
+}
+
+type NmAccessGroup struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVlanEgress struct {
+	Gpk      string `mapstructure:"gpk"`
+	VlanGfk  string `mapstructure:"vlan_gfk"`
+	IsTagged bool   `mapstructure:"is_tagged"`
+	LPortGfk string `mapstructure:"l_port_gfk"`
+}
+
+type NdcfgNetInstnc struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlConstraint struct {
+	Gpk                             string   `mapstructure:"gpk"`
+	Name                            string   `mapstructure:"name"`
+	Type                            string   `mapstructure:"type"`
+	RefName                         *string  `mapstructure:"ref_name"`
+	DblvlName                       *string  `mapstructure:"dblvl_name"`
+	TableName                       string   `mapstructure:"table_name"`
+	IsFunction                      bool     `mapstructure:"is_function"`
+	IsApiLevel                      bool     `mapstructure:"is_api_level"`
+	ColNameList                     []string `mapstructure:"col_name_list"`
+	JoinOperator                    string   `mapstructure:"join_operator"`
+	IsReferencing                   bool     `mapstructure:"is_referencing"`
+	IsJoinDefault                   bool     `mapstructure:"is_join_default"`
+	DblvlTableName                  *string  `mapstructure:"dblvl_table_name"`
+	IsReferenceable                 bool     `mapstructure:"is_referenceable"`
+	ColDataTypeList                 []string `mapstructure:"col_data_type_list"`
+	JoinOperandsExchange            bool     `mapstructure:"join_operands_exchange"`
+	JoinGrantsReadAccessFromChild   bool     `mapstructure:"join_grants_read_access_from_child"`
+	JoinLeftFunctionFormatTemplate  string   `mapstructure:"join_left_function_format_template"`
+	JoinGrantsReadAccessFromParent  bool     `mapstructure:"join_grants_read_access_from_parent"`
+	JoinRightFunctionFormatTemplate string   `mapstructure:"join_right_function_format_template"`
+}
+
+type NdcfgPPortTypeData struct {
+	Gpk       string `mapstructure:"gpk"`
+	PortType  string `mapstructure:"port_type"`
+	PortGroup string `mapstructure:"port_group"`
+	PortProto string `mapstructure:"port_proto"`
+	PortSpeed string `mapstructure:"port_speed"`
+}
+
+type CntlErrorType struct {
+	Gpk  string `mapstructure:"gpk"`
+	Code int64  `mapstructure:"code"`
+	Name string `mapstructure:"name"`
+}
+
+type NdBldg struct {
+	Gpk         string              `mapstructure:"gpk"`
+	Name        string              `mapstructure:"name"`
+	Number      string              `mapstructure:"number"`
+	Street      *string             `mapstructure:"street"`
+	PostalCode  *int64              `mapstructure:"postal_code"`
+	GeoLocation *map[string]float64 `mapstructure:"geo_location"`
+	SiteFqName  string              `mapstructure:"site_fq_name"`
+}
+
+type NdcfgModuleType struct {
+	Gpk          string `mapstructure:"gpk"`
+	Name         string `mapstructure:"name"`
+	Class        string `mapstructure:"class"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsActive     bool   `mapstructure:"is_active"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	HasUnqName   bool   `mapstructure:"has_unq_name"`
+	IsForwarding bool   `mapstructure:"is_forwarding"`
+	IsLocDepdnt  bool   `mapstructure:"is_loc_depdnt"`
+}
+
+type CntlTable struct {
+	Gpk                        string `mapstructure:"gpk"`
+	Name                       string `mapstructure:"name"`
+	System                     string `mapstructure:"system"`
+	IsLogDst                   bool   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool   `mapstructure:"is_log_src"`
+	IsLangDst                  bool   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool   `mapstructure:"is_lang_src"`
+	IsOtattrDst                bool   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool   `mapstructure:"is_otattr_src"`
+	ContentGender              string `mapstructure:"content_gender"`
+	PgClassExists              bool   `mapstructure:"pg_class_exists"`
+	ObjectTypeFqName           string `mapstructure:"object_type_fq_name"`
+	DoActivateGlobalPk2obj     bool   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool   `mapstructure:"object_type_grants_read_access"`
+}
+
+type NdPPort struct {
+	Gpk                  string   `mapstructure:"gpk"`
+	Name                 string   `mapstructure:"name"`
+	Type                 string   `mapstructure:"type"`
+	Speed                string   `mapstructure:"speed"`
+	IsNnl                bool     `mapstructure:"is_nnl"`
+	MdlBldg              *string  `mapstructure:"mdl_bldg"`
+	MdlRoom              *string  `mapstructure:"mdl_room"`
+	MdlType              string   `mapstructure:"mdl_type"`
+	Protocol             string   `mapstructure:"protocol"`
+	ModuleGfk            string   `mapstructure:"module_gfk"`
+	TypeGroup            string   `mapstructure:"type_group"`
+	Description          *string  `mapstructure:"description"`
+	MdlFqName            string   `mapstructure:"mdl_fq_name"`
+	NameSortby           string   `mapstructure:"name_sortby"`
+	TypeSortby           int64    `mapstructure:"type_sortby"`
+	IsConnected          bool     `mapstructure:"is_connected"`
+	IsDefective          bool     `mapstructure:"is_defective"`
+	IsEdgeNode           bool     `mapstructure:"is_edge_node"`
+	ConnectedGfk         string   `mapstructure:"connected_gfk"`
+	ConnectedName        *string  `mapstructure:"connected_name"`
+	ModuleTypeGfk        string   `mapstructure:"module_type_gfk"`
+	ConnectedMdlBldg     *string  `mapstructure:"connected_mdl_bldg"`
+	ConnectedMdlRoom     *string  `mapstructure:"connected_mdl_room"`
+	DestConnectedGfk     string   `mapstructure:"dest_connected_gfk"`
+	ConnectionPosition   int32    `mapstructure:"connection_position"`
+	ConnectedMdlFqName   *string  `mapstructure:"connected_mdl_fq_name"`
+	IsInternalConnected  bool     `mapstructure:"is_internal_connected"`
+	ConnectionIdGfkList  []string `mapstructure:"connection_id_gfk_list"`
+	InternalConnectedGfk string   `mapstructure:"internal_connected_gfk"`
+}
+
+type NdcfgDeviceType struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+	NwFwdLevel  int64  `mapstructure:"nw_fwd_level"`
+}
+
+type NdcfgParser struct {
+	Gpk          string                 `mapstructure:"gpk"`
+	Name         string                 `mapstructure:"name"`
+	ExecArgs     map[string]interface{} `mapstructure:"exec_args"`
+	Description  *string                `mapstructure:"description"`
+	AccessGroup  string                 `mapstructure:"access_group"`
+	IsExecutable bool                   `mapstructure:"is_executable"`
+}
+
+type DnsIpAddr struct {
+	Gpk        string     `mapstructure:"gpk"`
+	Cidr       net.IPNet  `mapstructure:"cidr"`
+	Type       string     `mapstructure:"type"`
+	Value      net.IPAddr `mapstructure:"value"`
+	IsOwn      bool       `mapstructure:"is_own"`
+	IsDhcp     bool       `mapstructure:"is_dhcp"`
+	IsReserved bool       `mapstructure:"is_reserved"`
+	IsRrTarget bool       `mapstructure:"is_rr_target"`
+}
+
+type NdSite struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Name             string  `mapstructure:"name"`
+	Type             string  `mapstructure:"type"`
+	FqName           string  `mapstructure:"fq_name"`
+	HasParent        bool    `mapstructure:"has_parent"`
+	Description      *string `mapstructure:"description"`
+	TypeIsChild      bool    `mapstructure:"type_is_child"`
+	ParentFqName     *string `mapstructure:"parent_fq_name"`
+	TypeForceIsChild bool    `mapstructure:"type_force_is_child"`
+}
+
+type CntlRole struct {
+	Gpk                string   `mapstructure:"gpk"`
+	Name               string   `mapstructure:"name"`
+	System             string   `mapstructure:"system"`
+	FqName             string   `mapstructure:"fq_name"`
+	IsRole             bool     `mapstructure:"is_role"`
+	Position           int64    `mapstructure:"position"`
+	IsAdminRole        bool     `mapstructure:"is_admin_role"`
+	HierarchyGfkList   []string `mapstructure:"hierarchy_gfk_list"`
+	IsDirectlyAssigned bool     `mapstructure:"is_directly_assigned"`
+}
+
+type NdcfgNetCmpnd struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdcfgNumMode struct {
+	Gpk   string `mapstructure:"gpk"`
+	Name  string `mapstructure:"name"`
+	Level int64  `mapstructure:"level"`
+}
+
+type NdcfgPPortSpeed struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr2role struct {
+	Gpk          string `mapstructure:"gpk"`
+	Role         string `mapstructure:"role"`
+	System       string `mapstructure:"system"`
+	RoleFqName   string `mapstructure:"role_fq_name"`
+	MgrLoginName string `mapstructure:"mgr_login_name"`
+}
+
+type CntlRole2role struct {
+	Gpk                 string `mapstructure:"gpk"`
+	RoleFqName          string `mapstructure:"role_fq_name"`
+	RoleIsRole          bool   `mapstructure:"role_is_role"`
+	ContainedRoleFqName string `mapstructure:"contained_role_fq_name"`
+}
+
+type NdModule2ap struct {
+	Gpk       string `mapstructure:"gpk"`
+	Bldg      string `mapstructure:"bldg"`
+	Room      string `mapstructure:"room"`
+	ApName    string `mapstructure:"ap_name"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type NdBcd struct {
+	Gpk                         string   `mapstructure:"gpk"`
+	Name                        string   `mapstructure:"name"`
+	Categ                       string   `mapstructure:"categ"`
+	IsOwn                       bool     `mapstructure:"is_own"`
+	Seclvl                      int64    `mapstructure:"seclvl"`
+	Description                 *string  `mapstructure:"description"`
+	DhcpDomain                  *string  `mapstructure:"dhcp_domain"`
+	DhcpEnabled                 bool     `mapstructure:"dhcp_enabled"`
+	DnsSearchList               []string `mapstructure:"dns_search_list"`
+	AdminDescription            *string  `mapstructure:"admin_description"`
+	DhcpOptT1Percent            uint8    `mapstructure:"dhcp_opt_t1_percent"`
+	DhcpOptT2Percent            uint8    `mapstructure:"dhcp_opt_t2_percent"`
+	DhcpTtlValuePercent         uint8    `mapstructure:"dhcp_ttl_value_percent"`
+	DhcpLeasetimeDynDays        uint8    `mapstructure:"dhcp_leasetime_dyn_days"`
+	DhcpLeasetimeDynHours       uint8    `mapstructure:"dhcp_leasetime_dyn_hours"`
+	DhcpLeasetimeDynMinutes     uint8    `mapstructure:"dhcp_leasetime_dyn_minutes"`
+	DhcpLeasetimeStaticDays     uint8    `mapstructure:"dhcp_leasetime_static_days"`
+	DhcpLeasetimeStaticHours    uint8    `mapstructure:"dhcp_leasetime_static_hours"`
+	DhcpOfferRsvTimeSeconds     uint8    `mapstructure:"dhcp_offer_rsv_time_seconds"`
+	DhcpLeasetimeStaticMinutes  uint8    `mapstructure:"dhcp_leasetime_static_minutes"`
+	DhcpDynamicLeaseRemovalTime string   `mapstructure:"dhcp_dynamic_lease_removal_time"`
+	DhcpNewLeasesGetStaticAddr  bool     `mapstructure:"dhcp_new_leases_get_static_addr"`
+	DhcpNewLeasesGetStaticFqdn  bool     `mapstructure:"dhcp_new_leases_get_static_fqdn"`
+	DhcpNewLeasesGetDynamicAddr bool     `mapstructure:"dhcp_new_leases_get_dynamic_addr"`
+}
+
+type NdcfgBcdCateg struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type NdcfgBcdSeclvl struct {
+	Gpk   string `mapstructure:"gpk"`
+	Value int64  `mapstructure:"value"`
+}
+
+type NdDevice struct {
+	Nc               string  `mapstructure:"nc"`
+	Acg              string  `mapstructure:"acg"`
+	Gpk              string  `mapstructure:"gpk"`
+	Fqdn             string  `mapstructure:"fqdn"`
+	Type             string  `mapstructure:"type"`
+	IsValid          bool    `mapstructure:"is_valid"`
+	Sysdescr         *string `mapstructure:"sysdescr"`
+	UsesVlans        bool    `mapstructure:"uses_vlans"`
+	Description      *string `mapstructure:"description"`
+	AssignedParser   string  `mapstructure:"assigned_parser"`
+	ExecutableParser string  `mapstructure:"executable_parser"`
+}
+
+type NdIpIntf struct {
+	Gpk         string     `mapstructure:"gpk"`
+	LPort       string     `mapstructure:"l_port"`
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	DevFqdn     string     `mapstructure:"dev_fqdn"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRoute struct {
+	Gpk        string      `mapstructure:"gpk"`
+	Cidr       net.IPNet   `mapstructure:"cidr"`
+	IsOwn      bool        `mapstructure:"is_own"`
+	Metric     int64       `mapstructure:"metric"`
+	DevFqdn    string      `mapstructure:"dev_fqdn"`
+	DestLPort  *string     `mapstructure:"dest_l_port"`
+	DestIpAddr *net.IPAddr `mapstructure:"dest_ip_addr"`
+}
+
+type NdLPort struct {
+	Gpk            string    `mapstructure:"gpk"`
+	Lag            *int64    `mapstructure:"lag"`
+	Name           string    `mapstructure:"name"`
+	Level          int64     `mapstructure:"level"`
+	DevFqdn        string    `mapstructure:"dev_fqdn"`
+	Priority       int64     `mapstructure:"priority"`
+	TagList        *[]string `mapstructure:"tag_list"`
+	AdmState       int64     `mapstructure:"adm_state"`
+	Description    *string   `mapstructure:"description"`
+	NameSortby     string    `mapstructure:"name_sortby"`
+	IngressVlanGfk *string   `mapstructure:"ingress_vlan_gfk"`
+}
+
+type NdcfgNetCmpnd2instnc struct {
+	Gpk       string `mapstructure:"gpk"`
+	NetCmpnd  string `mapstructure:"net_cmpnd"`
+	NetInstnc string `mapstructure:"net_instnc"`
+}
+
+type NdVlan struct {
+	Id          uint16  `mapstructure:"id"`
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	NetInstnc   string  `mapstructure:"net_instnc"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdL2pPort struct {
+	Gpk       string `mapstructure:"gpk"`
+	LPortGfk  string `mapstructure:"l_port_gfk"`
+	PPortGfk  string `mapstructure:"p_port_gfk"`
+	PortOrder int64  `mapstructure:"port_order"`
+}
+
+type NdDeviceAttributeImp struct {
+	Value   *string `mapstructure:"value"`
+	KeyWord string  `mapstructure:"key_word"`
+}
+
+type NdIpIntfImp struct {
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	VrrpId      *int64     `mapstructure:"vrrp_id"`
+	LPortName   string     `mapstructure:"l_port_name"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRouteImp struct {
+	Net           net.IPNet   `mapstructure:"net"`
+	Metric        int64       `mapstructure:"metric"`
+	IsRoutable    bool        `mapstructure:"is_routable"`
+	DestIpAddr    *net.IPAddr `mapstructure:"dest_ip_addr"`
+	DestLPortName *string     `mapstructure:"dest_l_port_name"`
+}
+
+type NdL2pPortImp struct {
+	PortOrder    int64   `mapstructure:"port_order"`
+	LPortName    string  `mapstructure:"l_port_name"`
+	PPortName    string  `mapstructure:"p_port_name"`
+	FqModuleName *string `mapstructure:"fq_module_name"`
+}
+
+type NdLPortImp struct {
+	Lag           *int64         `mapstructure:"lag"`
+	Name          string         `mapstructure:"name"`
+	Prio          *int64         `mapstructure:"prio"`
+	Status        *int64         `mapstructure:"status"`
+	TagList       *[]interface{} `mapstructure:"tag_list"`
+	PortLevel     *int64         `mapstructure:"port_level"`
+	Description   *string        `mapstructure:"description"`
+	VlanIdIngress *uint16        `mapstructure:"vlan_id_ingress"`
+}
+
+type NdVlanEgressImp struct {
+	Id        uint16 `mapstructure:"id"`
+	IsTagged  bool   `mapstructure:"is_tagged"`
+	LPortName string `mapstructure:"l_port_name"`
+}
+
+type NdVlanImp struct {
+	Id        uint16  `mapstructure:"id"`
+	Name      *string `mapstructure:"name"`
+	VxlanVni  *uint32 `mapstructure:"vxlan_vni"`
+	NetInstnc *string `mapstructure:"net_instnc"`
+}
+
+type EvlogRecordType struct {
+	Gpk       string `mapstructure:"gpk"`
+	ShortName string `mapstructure:"short_name"`
+}
+
+type CntlGlobalPk2obj struct {
+	Gpk              string                 `mapstructure:"gpk"`
+	ObjectDict       map[string]interface{} `mapstructure:"object_dict"`
+	ObjectTypeFqName string                 `mapstructure:"object_type_fq_name"`
+}
+
+type CntlConstraint2error struct {
+	Gpk                  string `mapstructure:"gpk"`
+	Sqlstate             string `mapstructure:"sqlstate"`
+	ErrorCode            int64  `mapstructure:"error_code"`
+	ConstraintName       string `mapstructure:"constraint_name"`
+	ErrorTypeCode        int64  `mapstructure:"error_type_code"`
+	ConstraintTable      string `mapstructure:"constraint_table"`
+	ParentKeyNotFound    *bool  `mapstructure:"parent_key_not_found"`
+	ConstraintIsApiLevel bool   `mapstructure:"constraint_is_api_level"`
+}
+
+type NdcfgParser2sysdescr struct {
+	Gpk          string `mapstructure:"gpk"`
+	Parser       string `mapstructure:"parser"`
+	Sysdescr     string `mapstructure:"sysdescr"`
+	IsExecutable bool   `mapstructure:"is_executable"`
+}
+
+type OrgUnitType struct {
+	Gpk       string `mapstructure:"gpk"`
+	Name      string `mapstructure:"name"`
+	Position  int64  `mapstructure:"position"`
+	ShortName string `mapstructure:"short_name"`
+}
+
+type OrgUnit struct {
+	Gpk              string   `mapstructure:"gpk"`
+	Name             string   `mapstructure:"name"`
+	Type             string   `mapstructure:"type"`
+	ParentGfk        *string  `mapstructure:"parent_gfk"`
+	ShortName        string   `mapstructure:"short_name"`
+	TreeLevel        int32    `mapstructure:"tree_level"`
+	SubPosition      int64    `mapstructure:"sub_position"`
+	IsMgrAssignable  bool     `mapstructure:"is_mgr_assignable"`
+	ParentShortName  *string  `mapstructure:"parent_short_name"`
+	HierarchyGfkList []string `mapstructure:"hierarchy_gfk_list"`
+}
+
+type NdcfgSlotTypeClass struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type NdcfgSlot2moduleTypeTree struct {
+	Gpk                   string   `mapstructure:"gpk"`
+	SlotType              string   `mapstructure:"slot_type"`
+	ParentGfk             *string  `mapstructure:"parent_gfk"`
+	TreeLevel             int32    `mapstructure:"tree_level"`
+	ModuleType            string   `mapstructure:"module_type"`
+	SlotVarname1          *string  `mapstructure:"slot_varname1"`
+	SubportPrefix         *string  `mapstructure:"subport_prefix"`
+	SubportVarprfx        *string  `mapstructure:"subport_varprfx"`
+	SubportVarname1       *string  `mapstructure:"subport_varname1"`
+	HierarchyGfkList      []string `mapstructure:"hierarchy_gfk_list"`
+	SubportVarprfxJoinDl  *string  `mapstructure:"subport_varprfx_join_dl"`
+	SubportVarprfxSplitDl *string  `mapstructure:"subport_varprfx_split_dl"`
+}
+
+type DnscfgFqdnType struct {
+	Gpk              string                 `mapstructure:"gpk"`
+	Name             string                 `mapstructure:"name"`
+	IsOwn            bool                   `mapstructure:"is_own"`
+	IsDhcp           bool                   `mapstructure:"is_dhcp"`
+	IsHost           bool                   `mapstructure:"is_host"`
+	Intname          string                 `mapstructure:"_intname"`
+	Position         int64                  `mapstructure:"position"`
+	RadType          int64                  `mapstructure:"rad_type"`
+	Groupname        string                 `mapstructure:"_groupname"`
+	Description      string                 `mapstructure:"description"`
+	IsWildcard       bool                   `mapstructure:"is_wildcard"`
+	IsNonterminal    bool                   `mapstructure:"is_nonterminal"`
+	VersionNameDict  map[string]interface{} `mapstructure:"version_name_dict"`
+	PermissionFqName *string                `mapstructure:"permission_fq_name"`
+}
+
+type DnscfgRecordType struct {
+	Gpk                               string  `mapstructure:"gpk"`
+	Name                              string  `mapstructure:"name"`
+	RfcInfo                           *string `mapstructure:"rfc_info"`
+	NumValue                          int64   `mapstructure:"num_value"`
+	IsInternal                        bool    `mapstructure:"is_internal"`
+	IsAddrBased                       bool    `mapstructure:"is_addr_based"`
+	IsNameBased                       bool    `mapstructure:"is_name_based"`
+	ForceAutoDml                      bool    `mapstructure:"force_auto_dml"`
+	FqdnTypeDflt                      *string `mapstructure:"fqdn_type_dflt"`
+	FqdnInttypeDflt                   *string `mapstructure:"_fqdn_inttype_dflt"`
+	TargetIsSingletonDflt             bool    `mapstructure:"target_is_singleton_dflt"`
+	TargetIsReverseUniqueDflt         bool    `mapstructure:"target_is_reverse_unique_dflt"`
+	DnspythonRdataTargetAttributeName *string `mapstructure:"dnspython_rdata_target_attribute_name"`
+}
+
+type DnscfgRecordInttype struct {
+	Gpk                   string                 `mapstructure:"gpk"`
+	IsOwn                 bool                   `mapstructure:"is_own"`
+	Intname               string                 `mapstructure:"_intname"`
+	FqdnType              string                 `mapstructure:"fqdn_type"`
+	Description           string                 `mapstructure:"description"`
+	RecordType            string                 `mapstructure:"record_type"`
+	FqdnInttype           string                 `mapstructure:"_fqdn_inttype"`
+	TargetFqdnType        *string                `mapstructure:"target_fqdn_type"`
+	VersionDefDict        map[string]interface{} `mapstructure:"version_def_dict"`
+	FqdnIsSingleton       bool                   `mapstructure:"fqdn_is_singleton"`
+	PermissionFqName      *string                `mapstructure:"permission_fq_name"`
+	TargetIpaddrType      *string                `mapstructure:"target_ipaddr_type"`
+	TargetIsSingleton     bool                   `mapstructure:"target_is_singleton"`
+	TargetFqdnInttype     *string                `mapstructure:"_target_fqdn_inttype"`
+	TargetIsReverseUnique bool                   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSet struct {
+	Gpk                 string  `mapstructure:"gpk"`
+	Name                string  `mapstructure:"name"`
+	Description         *string `mapstructure:"description"`
+	SoaDataRetry        uint32  `mapstructure:"soa_data_retry"`
+	SoaDataExpire       uint32  `mapstructure:"soa_data_expire"`
+	SoaDataMinimum      uint32  `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh      uint32  `mapstructure:"soa_data_refresh"`
+	SoaDataHostmaster   string  `mapstructure:"soa_data_hostmaster"`
+	MembersAreExclusive bool    `mapstructure:"members_are_exclusive"`
+	ZoneDataIsExternal  bool    `mapstructure:"zone_data_is_external"`
+}
+
+type DnscfgNsSetMember struct {
+	Gpk              string  `mapstructure:"gpk"`
+	NsFqdn           string  `mapstructure:"ns_fqdn"`
+	NsSetName        string  `mapstructure:"ns_set_name"`
+	NsIsMaster       bool    `mapstructure:"ns_is_master"`
+	NsIsNative       bool    `mapstructure:"ns_is_native"`
+	NsIsPrimary      bool    `mapstructure:"ns_is_primary"`
+	NsIsRegistered   bool    `mapstructure:"ns_is_registered"`
+	NsXferMasterFqdn *string `mapstructure:"ns_xfer_master_fqdn"`
+}
+
+type DnsRecord struct {
+	Gpk                        string      `mapstructure:"gpk"`
+	Ttl                        *uint32     `mapstructure:"ttl"`
+	Data                       *string     `mapstructure:"data"`
+	Fqdn                       string      `mapstructure:"fqdn"`
+	Type                       string      `mapstructure:"type"`
+	Zone                       string      `mapstructure:"zone"`
+	IsOwn                      bool        `mapstructure:"is_own"`
+	IsAuth                     bool        `mapstructure:"is_auth"`
+	FqdnType                   string      `mapstructure:"fqdn_type"`
+	HostIsNws                  bool        `mapstructure:"host_is_nws"`
+	TargetFqdn                 *string     `mapstructure:"target_fqdn"`
+	TargetIpaddr               *net.IPAddr `mapstructure:"target_ipaddr"`
+	TtlResetDate               *string     `mapstructure:"ttl_reset_date"`
+	TtlResetDays               *uint8      `mapstructure:"ttl_reset_days"`
+	FqdnDescription            *string     `mapstructure:"fqdn_description"`
+	TargetFqdnType             *string     `mapstructure:"target_fqdn_type"`
+	TtlZoneDefault             uint32      `mapstructure:"ttl_zone_default"`
+	TargetIpaddrType           *string     `mapstructure:"target_ipaddr_type"`
+	TargetIsSingleton          bool        `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique      bool        `mapstructure:"target_is_reverse_unique"`
+	RrChainTargetSubnetGfkList *[]string   `mapstructure:"rr_chain_target_subnet_gfk_list"`
+}
+
+type NdModule2device struct {
+	Gpk       string `mapstructure:"gpk"`
+	DevFqdn   string `mapstructure:"dev_fqdn"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type DnscfgFqdn2perm struct {
+	Gpk              string `mapstructure:"gpk"`
+	Fqdn             string `mapstructure:"fqdn"`
+	IsRecursive      bool   `mapstructure:"is_recursive"`
+	IsZoneBound      bool   `mapstructure:"is_zone_bound"`
+	RecursiveMinLvl  int64  `mapstructure:"recursive_min_lvl"`
+	PermissionFqName string `mapstructure:"permission_fq_name"`
+}
+
+type WapiVersion struct {
+	Gpk                   string                 `mapstructure:"gpk"`
+	Major                 int64                  `mapstructure:"major"`
+	Minor                 int64                  `mapstructure:"minor"`
+	Patch                 int64                  `mapstructure:"patch"`
+	DocUri                string                 `mapstructure:"doc_uri"`
+	Numeric               string                 `mapstructure:"numeric"`
+	Semantic              string                 `mapstructure:"semantic"`
+	LanguageDict          map[string]interface{} `mapstructure:"language_dict"`
+	OperationMode         string                 `mapstructure:"operation_mode"`
+	LastStatusChangeDate  string                 `mapstructure:"last_status_change_date"`
+	TransactionJsonSchema map[string]interface{} `mapstructure:"transaction_json_schema"`
+}
+
+type WapiVersionState struct {
+	Gpk      string `mapstructure:"gpk"`
+	Numeric  int64  `mapstructure:"numeric"`
+	Semantic string `mapstructure:"semantic"`
+}
+
+type WapiSystem struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectType struct {
+	Name                       string                 `mapstructure:"name"`
+	System                     string                 `mapstructure:"system"`
+	FqName                     string                 `mapstructure:"fq_name"`
+	Attributes                 map[string]interface{} `mapstructure:"attributes"`
+	IsLogDst                   bool                   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool                   `mapstructure:"is_log_src"`
+	Constraints                map[string]interface{} `mapstructure:"constraints"`
+	IsLangDst                  bool                   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool                   `mapstructure:"is_lang_src"`
+	Referencing                map[string]interface{} `mapstructure:"referencing"`
+	IsOtattrDst                bool                   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool                   `mapstructure:"is_otattr_src"`
+	Referenceable              map[string]interface{} `mapstructure:"referenceable"`
+	DoActivateGlobalPk2obj     bool                   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool                   `mapstructure:"object_type_grants_read_access"`
+}
+
+type CntlDataType struct {
+	Pk                 int64    `mapstructure:"pk"`
+	Gpk                string   `mapstructure:"gpk"`
+	Name               string   `mapstructure:"name"`
+	BaseName           string   `mapstructure:"base_name"`
+	BaseNspc           *string  `mapstructure:"base_nspc"`
+	JsonName           string   `mapstructure:"json_name"`
+	IsPrimary          bool     `mapstructure:"is_primary"`
+	TextLength         *int64   `mapstructure:"text_length"`
+	PgTypeName         string   `mapstructure:"pg_type_name"`
+	PgTypeNspc         string   `mapstructure:"pg_type_nspc"`
+	OperatorList       []string `mapstructure:"operator_list"`
+	FormatLiteral      *string  `mapstructure:"format_literal"`
+	ConvDatyValAttname string   `mapstructure:"conv_daty_val_attname"`
+}
+
+type WapiFunction struct {
+	Name               string                 `mapstructure:"name"`
+	System             string                 `mapstructure:"system"`
+	FqName             string                 `mapstructure:"fq_name"`
+	Parameters         map[string]interface{} `mapstructure:"parameters"`
+	ObjectType         string                 `mapstructure:"object_type"`
+	IsReturning        bool                   `mapstructure:"is_returning"`
+	IsExecutable       bool                   `mapstructure:"is_executable"`
+	IsDataManipulating bool                   `mapstructure:"is_data_manipulating"`
+}
+
+type Dhcpv4GlobalOption struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Code        int64   `mapstructure:"code"`
+	Data        string  `mapstructure:"data"`
+	Name        string  `mapstructure:"name"`
+	DataType    string  `mapstructure:"data_type"`
+	Reference   *string `mapstructure:"reference"`
+	Description *string `mapstructure:"description"`
+	IsGenerated bool    `mapstructure:"is_generated"`
+}
+
+type NdcfgSiteType struct {
+	Gpk          string `mapstructure:"gpk"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	ShortName    string `mapstructure:"short_name"`
+	ForceIsChild bool   `mapstructure:"force_is_child"`
+}
+
+type Dhcpv4Lease struct {
+	Gpk                  string                  `mapstructure:"gpk"`
+	IsOwn                bool                    `mapstructure:"is_own"`
+	FqdnValue            *string                 `mapstructure:"fqdn_value"`
+	IsExpired            bool                    `mapstructure:"is_expired"`
+	IsOffered            bool                    `mapstructure:"is_offered"`
+	TsExpires            string                  `mapstructure:"ts_expires"`
+	FqdnIsDhcp           bool                    `mapstructure:"fqdn_is_dhcp"`
+	IpAddrValue          *net.IPAddr             `mapstructure:"ip_addr_value"`
+	IpSubnetCidr         net.IPNet               `mapstructure:"ip_subnet_cidr"`
+	IsStaticAddr         bool                    `mapstructure:"is_static_addr"`
+	IsStaticFqdn         bool                    `mapstructure:"is_static_fqdn"`
+	LeasetimeDays        *uint8                  `mapstructure:"leasetime_days"`
+	MacAddrValue         *net.HardwareAddr       `mapstructure:"mac_addr_value"`
+	IpAddrIsDhcp         bool                    `mapstructure:"ip_addr_is_dhcp"`
+	LeasetimeHours       *uint8                  `mapstructure:"leasetime_hours"`
+	TsLastChanged        string                  `mapstructure:"ts_last_changed"`
+	AdmStatusDescr       *string                 `mapstructure:"adm_status_descr"`
+	ClientIdentifier     *string                 `mapstructure:"client_identifier"`
+	LeasetimeMinutes     *uint8                  `mapstructure:"leasetime_minutes"`
+	OperStatusDescr      *string                 `mapstructure:"oper_status_descr"`
+	ClientOptionsDict    *map[string]interface{} `mapstructure:"client_options_dict"`
+	ServerOptionsDict    *map[string]interface{} `mapstructure:"server_options_dict"`
+	AlwaysMatchByMacAddr bool                    `mapstructure:"always_match_by_mac_addr"`
+}
+
+type Dhcpv4SubnetOption struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Code         int64     `mapstructure:"code"`
+	Data         string    `mapstructure:"data"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	Priority     int64     `mapstructure:"priority"`
+	CodeDataType string    `mapstructure:"code_data_type"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4Og struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Name         string    `mapstructure:"name"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4GroupOption struct {
+	Gpk          string `mapstructure:"gpk"`
+	Code         int64  `mapstructure:"code"`
+	Data         string `mapstructure:"data"`
+	IsOwn        bool   `mapstructure:"is_own"`
+	OgGfk        string `mapstructure:"og_gfk"`
+	Priority     int64  `mapstructure:"priority"`
+	CodeDataType string `mapstructure:"code_data_type"`
+}
+
+type NdcfgSiteType2type struct {
+	Gpk             string `mapstructure:"gpk"`
+	ChildShortName  string `mapstructure:"child_short_name"`
+	ParentShortName string `mapstructure:"parent_short_name"`
+}
+
+type CntlColumnKvtab struct {
+	Gpk        string `mapstructure:"gpk"`
+	Key        string `mapstructure:"key"`
+	Position   *int64 `mapstructure:"position"`
+	TableName  string `mapstructure:"table_name"`
+	ColumnName string `mapstructure:"column_name"`
+}
+
+type NdDiqTa struct {
+	Gpk               string  `mapstructure:"gpk"`
+	Owner             string  `mapstructure:"owner"`
+	IsOwn             bool    `mapstructure:"is_own"`
+	Position          *int64  `mapstructure:"position"`
+	IsActive          bool    `mapstructure:"is_active"`
+	IsWorking         bool    `mapstructure:"is_working"`
+	ParentGfk         *string `mapstructure:"parent_gfk"`
+	MailOnError       bool    `mapstructure:"mail_on_error"`
+	LastDevimpTs      *string `mapstructure:"last_devimp_ts"`
+	LastDevimpMsg     *string `mapstructure:"last_devimp_msg"`
+	MailOnSuccess     bool    `mapstructure:"mail_on_success"`
+	PreserveOnError   bool    `mapstructure:"preserve_on_error"`
+	LastDevimpSuccess *bool   `mapstructure:"last_devimp_success"`
+	PreserveOnSuccess bool    `mapstructure:"preserve_on_success"`
+}
+
+type NdDiqTaEntry struct {
+	Gpk               string                 `mapstructure:"gpk"`
+	DevNc             string                 `mapstructure:"dev_nc"`
+	DevAcg            string                 `mapstructure:"dev_acg"`
+	DoSave            bool                   `mapstructure:"do_save"`
+	DevFqdn           string                 `mapstructure:"dev_fqdn"`
+	DevType           string                 `mapstructure:"dev_type"`
+	DoParse           bool                   `mapstructure:"do_parse"`
+	DoImport          bool                   `mapstructure:"do_import"`
+	DevParser         string                 `mapstructure:"dev_parser"`
+	DiqTaGfk          string                 `mapstructure:"diq_ta_gfk"`
+	DiqTaIsOwn        bool                   `mapstructure:"diq_ta_is_own"`
+	DevDescription    *string                `mapstructure:"dev_description"`
+	LastDevimpMsg     *string                `mapstructure:"last_devimp_msg"`
+	UploadFilename    *string                `mapstructure:"upload_filename"`
+	OutputVerbosity   bool                   `mapstructure:"output_verbosity"`
+	DevAttributesDict map[string]interface{} `mapstructure:"dev_attributes_dict"`
+	LastDevimpSuccess *bool                  `mapstructure:"last_devimp_success"`
+	RplcCharsetErrors bool                   `mapstructure:"rplc_charset_errors"`
+}
+
+type DnscfgFqdnTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+}
+
+type WapiException struct {
+	Hint              *string                `mapstructure:"hint"`
+	Error             map[string]interface{} `mapstructure:"error"`
+	Others            map[string]interface{} `mapstructure:"others"`
+	Traceback         []interface{}          `mapstructure:"traceback"`
+	Constraint        map[string]interface{} `mapstructure:"constraint"`
+	ErrorType         map[string]interface{} `mapstructure:"error_type"`
+	StackedDiagParams map[string]interface{} `mapstructure:"stacked_diag_params"`
+}
+
+type EvlogRecord struct {
+	Data             *string                `mapstructure:"data"`
+	Type             string                 `mapstructure:"type"`
+	ObjectGfk        string                 `mapstructure:"object_gfk"`
+	LanguageTag      string                 `mapstructure:"language_tag"`
+	TaTimestamp      string                 `mapstructure:"ta_timestamp"`
+	MgrLoginName     *string                `mapstructure:"mgr_login_name"`
+	LogParamsDict    map[string]interface{} `mapstructure:"log_params_dict"`
+	ObjectTypeFqName string                 `mapstructure:"object_type_fq_name"`
+}
+
+type CntlWapiAuth struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Type             string  `mapstructure:"type"`
+	Token            string  `mapstructure:"token"`
+	IsOwn            bool    `mapstructure:"is_own"`
+	IsExpired        bool    `mapstructure:"is_expired"`
+	LoginName        string  `mapstructure:"login_name"`
+	DeleteDate       string  `mapstructure:"delete_date"`
+	Description      *string `mapstructure:"description"`
+	ExpirationDate   *string `mapstructure:"expiration_date"`
+	LastLoginDate    *string `mapstructure:"last_login_date"`
+	LastGenerateDate string  `mapstructure:"last_generate_date"`
+}
+
+type DnssecZoneKey struct {
+	Gpk            string   `mapstructure:"gpk"`
+	Tag            *uint32  `mapstructure:"tag"`
+	Data           *string  `mapstructure:"data"`
+	Fqdn           string   `mapstructure:"fqdn"`
+	Flags          int64    `mapstructure:"flags"`
+	IsKsk          bool     `mapstructure:"is_ksk"`
+	IsActive       bool     `mapstructure:"is_active"`
+	CreationTs     string   `mapstructure:"creation_ts"`
+	ActivationTs   *string  `mapstructure:"activation_ts"`
+	DnskeyRrData   string   `mapstructure:"dnskey_rr_data"`
+	DeactivationTs *string  `mapstructure:"deactivation_ts"`
+	DsRrDataList   []string `mapstructure:"ds_rr_data_list"`
+}
+
+type CntlMgr2group struct {
+	Gpk                string  `mapstructure:"gpk"`
+	IsOwn              bool    `mapstructure:"is_own"`
+	GroupName          string  `mapstructure:"group_name"`
+	MgrLoginName       string  `mapstructure:"mgr_login_name"`
+	ParentGroupName    string  `mapstructure:"parent_group_name"`
+	ParentMgrLoginName *string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	FqdnValue       string `mapstructure:"fqdn_value"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type DhcpcfgOperator struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type DhcpcfgDt2operator2dt struct {
+	Gpk           string `mapstructure:"gpk"`
+	Operator      string `mapstructure:"operator"`
+	LeftDataType  string `mapstructure:"left_data_type"`
+	RightDataType string `mapstructure:"right_data_type"`
+}
+
+type Dhcpv4SubnetOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	SnOptGfk       string `mapstructure:"sn_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type Dhcpv4GroupOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	OgOptGfk       string `mapstructure:"og_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type MacauthClient struct {
+	Gpk               string           `mapstructure:"gpk"`
+	IsOwn             bool             `mapstructure:"is_own"`
+	WpaKey            *string          `mapstructure:"wpa_key"`
+	BcdName           string           `mapstructure:"bcd_name"`
+	MacAddr           net.HardwareAddr `mapstructure:"mac_addr"`
+	Description       *string          `mapstructure:"description"`
+	LastLoginDate     *string          `mapstructure:"last_login_date"`
+	LastLoginNodeInfo *string          `mapstructure:"last_login_node_info"`
+}
+
+type NdVlan2device struct {
+	Gpk     string `mapstructure:"gpk"`
+	DevFqdn string `mapstructure:"dev_fqdn"`
+	VlanGfk string `mapstructure:"vlan_gfk"`
+}
+
+type NdcfgLPortTag struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Value       string  `mapstructure:"value"`
+	LevelList   []int16 `mapstructure:"level_list"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan struct {
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Vni         uint32  `mapstructure:"vni"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan2device struct {
+	Gpk      string `mapstructure:"gpk"`
+	DevFqdn  string `mapstructure:"dev_fqdn"`
+	VxlanVni uint32 `mapstructure:"vxlan_vni"`
+}
+
+type CntlGroup struct {
+	Gpk                     string  `mapstructure:"gpk"`
+	Name                    string  `mapstructure:"name"`
+	IsOwn                   bool    `mapstructure:"is_own"`
+	IsSub                   bool    `mapstructure:"is_sub"`
+	SubId                   *string `mapstructure:"sub_id"`
+	IsAdmin                 bool    `mapstructure:"is_admin"`
+	Description             *string `mapstructure:"description"`
+	DoIdmSync               bool    `mapstructure:"do_idm_sync"`
+	ParentName              string  `mapstructure:"parent_name"`
+	OuShortName             *string `mapstructure:"ou_short_name"`
+	IdmDescription          *string `mapstructure:"idm_description"`
+	IdmSyncLastTs           *string `mapstructure:"idm_sync_last_ts"`
+	IdmSyncIsActive         bool    `mapstructure:"idm_sync_is_active"`
+	IdmSyncLastState        *string `mapstructure:"idm_sync_last_state"`
+	IdmSyncMaxMgrCount      int64   `mapstructure:"idm_sync_max_mgr_count"`
+	IdmSyncLastSuccessfulTs *string `mapstructure:"idm_sync_last_successful_ts"`
+}
+
+type NdBcd2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	BcdName         string `mapstructure:"bcd_name"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type CntlMgr2ou struct {
+	Gpk                string `mapstructure:"gpk"`
+	IsOwn              bool   `mapstructure:"is_own"`
+	IsSub              bool   `mapstructure:"is_sub"`
+	OuShortName        string `mapstructure:"ou_short_name"`
+	MgrLoginName       string `mapstructure:"mgr_login_name"`
+	ParentOuShortName  string `mapstructure:"parent_ou_short_name"`
+	ParentMgrLoginName string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	FqdnValue   string `mapstructure:"fqdn_value"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlOtAttrDef struct {
+	Gpk                            string  `mapstructure:"gpk"`
+	KeyWord                        string  `mapstructure:"key_word"`
+	DataType                       string  `mapstructure:"data_type"`
+	ObjectTypeFqName               string  `mapstructure:"object_type_fq_name"`
+	InsTrgFuncFqName               *string `mapstructure:"ins_trg_func_fq_name"`
+	UpdTrgFuncFqName               *string `mapstructure:"upd_trg_func_fq_name"`
+	RefObjectTypeFqName            string  `mapstructure:"ref_object_type_fq_name"`
+	ObjectTypeApiRefConstraintName string  `mapstructure:"object_type_api_ref_constraint_name"`
+}
+
+type CntlOtAttrKey struct {
+	Gpk                 string  `mapstructure:"gpk"`
+	SetMode             int64   `mapstructure:"set_mode"`
+	DisplayMode         int64   `mapstructure:"display_mode"`
+	DefaultValue        *string `mapstructure:"default_value"`
+	ValIsUnique         bool    `mapstructure:"val_is_unique"`
+	RefObjectGfk        *string `mapstructure:"ref_object_gfk"`
+	ValIsNullable       bool    `mapstructure:"val_is_nullable"`
+	DisplayPosition     int64   `mapstructure:"display_position"`
+	PermissionFqName    *string `mapstructure:"permission_fq_name"`
+	ObjectTypeFqName    string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord    string  `mapstructure:"ot_attr_def_key_word"`
+	RefObjectTypeFqName string  `mapstructure:"ref_object_type_fq_name"`
+}
+
+type CntlOtAttrVal struct {
+	Value            *string `mapstructure:"value"`
+	DataType         string  `mapstructure:"data_type"`
+	ObjectGfk        string  `mapstructure:"object_gfk"`
+	RefObjectGfk     *string `mapstructure:"ref_object_gfk"`
+	ObjectTypeFqName string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord string  `mapstructure:"ot_attr_def_key_word"`
+}
+
+type NdBcd2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	BcdName     string `mapstructure:"bcd_name"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlReplication struct {
+	Gpk      string `mapstructure:"gpk"`
+	Name     string `mapstructure:"name"`
+	OperMode string `mapstructure:"oper_mode"`
+}
+
+type CntlReplicationPub2sub struct {
+	Gpk                   string `mapstructure:"gpk"`
+	DoInit                bool   `mapstructure:"do_init"`
+	PublisherFqdn         string `mapstructure:"publisher_fqdn"`
+	SubscriberFqdn        string `mapstructure:"subscriber_fqdn"`
+	ReplicationName       string `mapstructure:"replication_name"`
+	ReplicationOperMode   string `mapstructure:"replication_oper_mode"`
+	ReplicationSlotSuffix string `mapstructure:"replication_slot_suffix"`
+}
+
+type WapiDataType struct {
+	Name          string                 `mapstructure:"name"`
+	JsonName      string                 `mapstructure:"json_name"`
+	TextLength    *int64                 `mapstructure:"text_length"`
+	LanguageDict  map[string]interface{} `mapstructure:"language_dict"`
+	OperatorList  []string               `mapstructure:"operator_list"`
+	FormatLiteral *string                `mapstructure:"format_literal"`
+}
+
+type WapiDataTypeOperator struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+	DataTypeList []string               `mapstructure:"data_type_list"`
+}
+
+type DnsRecordImp struct {
+	Ttl                   *uint32 `mapstructure:"ttl"`
+	Type                  *string `mapstructure:"type"`
+	DataList              *string `mapstructure:"data_list"`
+	TtlResetDays          *uint8  `mapstructure:"ttl_reset_days"`
+	TargetIsSingleton     *bool   `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique *bool   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSetHost struct {
+	Gpk       string `mapstructure:"gpk"`
+	HostFqdn  string `mapstructure:"host_fqdn"`
+	NsSetName string `mapstructure:"ns_set_name"`
+}
+
+type Dhcpv4Og2lease struct {
+	Gpk      string `mapstructure:"gpk"`
+	IsOwn    bool   `mapstructure:"is_own"`
+	OgGfk    string `mapstructure:"og_gfk"`
+	Priority int64  `mapstructure:"priority"`
+	LeaseGfk string `mapstructure:"lease_gfk"`
+}
+
+type CntlDataTypeOperator struct {
+	Gpk          string   `mapstructure:"gpk"`
+	Name         string   `mapstructure:"name"`
+	DataTypeList []string `mapstructure:"data_type_list"`
+}
+
+type TmpGenericObject struct {
+	Dict     map[string]interface{}   `mapstructure:"_dict"`
+	DictList []map[string]interface{} `mapstructure:"_dict_list"`
+}
+
+type NdVxlanImp struct {
+	Vni *uint32 `mapstructure:"vni"`
+}
+
+type WapiMaintState struct {
+	Pk                int64                  `mapstructure:"pk"`
+	TsEnd             string                 `mapstructure:"ts_end"`
+	Subject           string                 `mapstructure:"subject"`
+	Duration          string                 `mapstructure:"duration"`
+	TsBegin           string                 `mapstructure:"ts_begin"`
+	IsActive          bool                   `mapstructure:"is_active"`
+	LanguageDict      map[string]interface{} `mapstructure:"language_dict"`
+	CntlErrorCode     int64                  `mapstructure:"cntl_error_code"`
+	CntlErrorTypeCode int64                  `mapstructure:"cntl_error_type_code"`
+	CntlErrorTypeName string                 `mapstructure:"cntl_error_type_name"`
+}
+
+type CntlLanguage struct {
+	Gpk       string `mapstructure:"gpk"`
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsActive  bool   `mapstructure:"is_active"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type CntlOtLangAttrDef struct {
+	Gpk              string `mapstructure:"gpk"`
+	KeyWord          string `mapstructure:"key_word"`
+	IsStatic         bool   `mapstructure:"is_static"`
+	IsPrimary        bool   `mapstructure:"is_primary"`
+	ObjectTypeFqName string `mapstructure:"object_type_fq_name"`
+}
+
+type CntlOtLangAttrVal struct {
+	Value                *string `mapstructure:"value"`
+	ObjectGfk            string  `mapstructure:"object_gfk"`
+	LanguageTag          string  `mapstructure:"language_tag"`
+	ObjectTypeFqName     string  `mapstructure:"object_type_fq_name"`
+	OtLangAttrDefKeyWord string  `mapstructure:"ot_lang_attr_def_key_word"`
+}
+
+type WapiLanguage struct {
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type WapiObjectTypeLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectTypeAttrLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type TmpDiag4gpk struct {
+	ObjectGpk      string `mapstructure:"object_gpk"`
+	SystemName     string `mapstructure:"system_name"`
+	ObjectTypeName string `mapstructure:"object_type_name"`
+}
+
diff --git a/4.1/golang/tmp.py b/4.1/golang/tmp.py
deleted file mode 100644
index bfaa8ac..0000000
--- a/4.1/golang/tmp.py
+++ /dev/null
@@ -1,111 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GenericObject(APIObject):
-	_dict: dict
-	_dict_list: list
-
-	def __post_init__(self):
-		if not isinstance(self._dict, dict):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(self._dict)}")
-		if not isinstance(self._dict_list, list):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(self._dict_list)}")
-
-	@staticmethod
-	def create_ta(_dict_new: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		return {'name': 'tmp.generic_object.create', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, _dict_new: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(_dict_new=_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(_dict_list_old: list = []) -> dict:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		return {'name': 'tmp.generic_object.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'_dict_list': _dict_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, _dict_list_old: list = []) -> list:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(_dict_list_old=_dict_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_dict_new: dict = {}, _dict_old: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		return {'name': 'tmp.generic_object.update', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({'_dict': _dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _dict_new: dict = {}, _dict_old: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(_dict_new=_dict_new, _dict_old=_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Diag4gpk(APIObject):
-	object_gpk: str
-	system_name: str
-	object_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.object_gpk, str):
-			raise ValueError(f"'object_gpk' of incorrect type. Expected str, got {type(self.object_gpk)}")
-		if not isinstance(self.system_name, str):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(self.system_name)}")
-		if not isinstance(self.object_type_name, str):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(self.object_type_name)}")
-
-	@staticmethod
-	def list_ta(system_name_old: str = None, object_type_name_old: str = None) -> dict:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		return {'name': 'tmp.diag4gpk.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'system_name': system_name_old, 'object_type_name': object_type_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, system_name_old: str = None, object_type_name_old: str = None) -> list:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(system_name_old=system_name_old, object_type_name_old=object_type_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.1/golang/wapi.py b/4.1/golang/wapi.py
deleted file mode 100644
index 9c70bb0..0000000
--- a/4.1/golang/wapi.py
+++ /dev/null
@@ -1,906 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Version(APIObject):
-	gpk: str
-	major: int
-	minor: int
-	patch: int
-	doc_uri: str
-	numeric: str
-	semantic: str
-	language_dict: dict
-	operation_mode: str
-	last_status_change_date: str
-	transaction_json_schema: dict
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.major, int):
-			raise ValueError(f"'major' of incorrect type. Expected int, got {type(self.major)}")
-		if not isinstance(self.minor, int):
-			raise ValueError(f"'minor' of incorrect type. Expected int, got {type(self.minor)}")
-		if not isinstance(self.patch, int):
-			raise ValueError(f"'patch' of incorrect type. Expected int, got {type(self.patch)}")
-		if not isinstance(self.doc_uri, str):
-			raise ValueError(f"'doc_uri' of incorrect type. Expected str, got {type(self.doc_uri)}")
-		if not isinstance(self.numeric, str):
-			raise ValueError(f"'numeric' of incorrect type. Expected str, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operation_mode, str):
-			raise ValueError(f"'operation_mode' of incorrect type. Expected str, got {type(self.operation_mode)}")
-		if not isinstance(self.last_status_change_date, str):
-			raise ValueError(f"'last_status_change_date' of incorrect type. Expected str, got {type(self.last_status_change_date)}")
-		if not isinstance(self.transaction_json_schema, dict):
-			raise ValueError(f"'transaction_json_schema' of incorrect type. Expected dict, got {type(self.transaction_json_schema)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, major_list_old: list = None, minor_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if major_list_old is not None and not (isinstance(major_list_old, list)):
-			raise ValueError(f"'major_list' of incorrect type. Expected list, got {type(major_list_old)}")
-		if minor_list_old is not None and not (isinstance(minor_list_old, list)):
-			raise ValueError(f"'minor_list' of incorrect type. Expected list, got {type(minor_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'major_list': major_list_old, 'minor_list': minor_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, major_list_old: list = None, minor_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if major_list_old is not None and not (isinstance(major_list_old, list)):
-			raise ValueError(f"'major_list' of incorrect type. Expected list, got {type(major_list_old)}")
-		if minor_list_old is not None and not (isinstance(minor_list_old, list)):
-			raise ValueError(f"'minor_list' of incorrect type. Expected list, got {type(minor_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, major_list_old=major_list_old, minor_list_old=minor_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VersionState(APIObject):
-	gpk: str
-	numeric: int
-	semantic: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.numeric, int):
-			raise ValueError(f"'numeric' of incorrect type. Expected int, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-
-	@staticmethod
-	def list_ta(gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, semantic_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if semantic_list_old is not None and not (isinstance(semantic_list_old, list)):
-			raise ValueError(f"'semantic_list' of incorrect type. Expected list, got {type(semantic_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'semantic_list': semantic_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, semantic_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_old is not None and not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if semantic_list_old is not None and not (isinstance(semantic_list_old, list)):
-			raise ValueError(f"'semantic_list' of incorrect type. Expected list, got {type(semantic_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_old=gpk_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, semantic_list_old=semantic_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class System(APIObject):
-	name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.system.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectType(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	attributes: dict
-	is_log_dst: bool
-	is_log_src: bool
-	constraints: dict
-	is_lang_dst: bool
-	is_lang_src: bool
-	referencing: dict
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	referenceable: dict
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.attributes, dict):
-			raise ValueError(f"'attributes' of incorrect type. Expected dict, got {type(self.attributes)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.constraints, dict):
-			raise ValueError(f"'constraints' of incorrect type. Expected dict, got {type(self.constraints)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.referencing, dict):
-			raise ValueError(f"'referencing' of incorrect type. Expected dict, got {type(self.referencing)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.referenceable, dict):
-			raise ValueError(f"'referenceable' of incorrect type. Expected dict, got {type(self.referenceable)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Function(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	parameters: dict
-	object_type: str
-	is_returning: bool
-	is_executable: bool
-	is_data_manipulating: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.parameters, dict):
-			raise ValueError(f"'parameters' of incorrect type. Expected dict, got {type(self.parameters)}")
-		if not isinstance(self.object_type, str):
-			raise ValueError(f"'object_type' of incorrect type. Expected str, got {type(self.object_type)}")
-		if not isinstance(self.is_returning, bool):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(self.is_returning)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-		if not isinstance(self.is_data_manipulating, bool):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(self.is_data_manipulating)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, parameter_list_old: list = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None, parameter_is_deprecated_old: bool = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if parameter_list_old is not None and not (isinstance(parameter_list_old, list)):
-			raise ValueError(f"'parameter_list' of incorrect type. Expected list, got {type(parameter_list_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-		if parameter_is_deprecated_old is not None and not (isinstance(parameter_is_deprecated_old, bool)):
-			raise ValueError(f"'parameter_is_deprecated' of incorrect type. Expected bool, got {type(parameter_is_deprecated_old)}")
-
-		return {'name': 'wapi.function.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'is_returning': is_returning_old, 'is_executable': is_executable_old, 'parameter_list': parameter_list_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_data_manipulating': is_data_manipulating_old, 'parameter_is_deprecated': parameter_is_deprecated_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, parameter_list_old: list = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None, parameter_is_deprecated_old: bool = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if parameter_list_old is not None and not (isinstance(parameter_list_old, list)):
-			raise ValueError(f"'parameter_list' of incorrect type. Expected list, got {type(parameter_list_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-		if parameter_is_deprecated_old is not None and not (isinstance(parameter_is_deprecated_old, bool)):
-			raise ValueError(f"'parameter_is_deprecated' of incorrect type. Expected bool, got {type(parameter_is_deprecated_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, is_returning_old=is_returning_old, is_executable_old=is_executable_old, parameter_list_old=parameter_list_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_data_manipulating_old=is_data_manipulating_old, parameter_is_deprecated_old=parameter_is_deprecated_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Exception(APIObject):
-	hint: str
-	error: dict
-	others: dict
-	traceback: list
-	constraint: dict
-	error_type: dict
-	stacked_diag_params: dict
-
-	def __post_init__(self):
-		if self.hint is not None and not isinstance(self.hint, str):
-			raise ValueError(f"'hint' of incorrect type. Expected str, got {type(self.hint)}")
-		if not isinstance(self.error, dict):
-			raise ValueError(f"'error' of incorrect type. Expected dict, got {type(self.error)}")
-		if not isinstance(self.others, dict):
-			raise ValueError(f"'others' of incorrect type. Expected dict, got {type(self.others)}")
-		if not isinstance(self.traceback, list):
-			raise ValueError(f"'traceback' of incorrect type. Expected list, got {type(self.traceback)}")
-		if not isinstance(self.constraint, dict):
-			raise ValueError(f"'constraint' of incorrect type. Expected dict, got {type(self.constraint)}")
-		if not isinstance(self.error_type, dict):
-			raise ValueError(f"'error_type' of incorrect type. Expected dict, got {type(self.error_type)}")
-		if not isinstance(self.stacked_diag_params, dict):
-			raise ValueError(f"'stacked_diag_params' of incorrect type. Expected dict, got {type(self.stacked_diag_params)}")
-
-@dataclass()
-class DataType(APIObject):
-	name: str
-	json_name: str
-	text_length: int
-	language_dict: dict
-	operator_list: list
-	format_literal: str
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'json_name': json_name_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(json_name_old=json_name_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	name: str
-	language_dict: dict
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type_operator.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class MaintState(APIObject):
-	pk: int
-	ts_end: str
-	subject: str
-	duration: str
-	ts_begin: str
-	is_active: bool
-	language_dict: dict
-	cntl_error_code: int
-	cntl_error_type_code: int
-	cntl_error_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.ts_end, str):
-			raise ValueError(f"'ts_end' of incorrect type. Expected str, got {type(self.ts_end)}")
-		if not isinstance(self.subject, str):
-			raise ValueError(f"'subject' of incorrect type. Expected str, got {type(self.subject)}")
-		if not isinstance(self.duration, str):
-			raise ValueError(f"'duration' of incorrect type. Expected str, got {type(self.duration)}")
-		if not isinstance(self.ts_begin, str):
-			raise ValueError(f"'ts_begin' of incorrect type. Expected str, got {type(self.ts_begin)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.cntl_error_code, int):
-			raise ValueError(f"'cntl_error_code' of incorrect type. Expected int, got {type(self.cntl_error_code)}")
-		if not isinstance(self.cntl_error_type_code, int):
-			raise ValueError(f"'cntl_error_type_code' of incorrect type. Expected int, got {type(self.cntl_error_type_code)}")
-		if not isinstance(self.cntl_error_type_name, str):
-			raise ValueError(f"'cntl_error_type_name' of incorrect type. Expected str, got {type(self.cntl_error_type_name)}")
-
-	@staticmethod
-	def list_ta(is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.maint_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	tag: str
-	name: str
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeAttrLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_attr_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/__init__.py b/4.2/golang/__init__.py
deleted file mode 100644
index 4ed36e8..0000000
--- a/4.2/golang/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-### AUTOGENERATED
-import requests
-from typing import Union
-from pprint import pformat
-
-
-# ExeccutionError is derived from ValueError to keep backward compatibility.
-class ExecutionError(ValueError):
-	"""Raise if API returns an error code != 400"""
-
-	def __init__(self, status_code, reason, result):
-		self.status_code = status_code
-		self.reason = reason
-		self.result = result
-		message = f'Request returned unexpected result ({self.status_code}: {self.reason}). Result: \n{pformat(self.result)}'
-		super().__init__(message)
-
-
-class APIObject(object):
-	pass
-
-
-class ExplicitNull(object):
-	pass
-
-
-class APIEndpoint(object):
-	def __init__(self, base_url: str, token: str, **kwargs):
-		self.base_url = base_url
-		self.version = '4.2'
-		self.token = token
-
-
-class APISession(object):
-	def __init__(self, endpoint: APIEndpoint):
-		self.session = requests.session()
-		self.session.headers.update({'Authorization': 'Bearer ' + endpoint.token})
-		if 'www-net' in endpoint.base_url:
-			self.base_url = f'https://{endpoint.base_url}/api/{endpoint.version}'
-		else:
-			self.base_url = f'https://{endpoint.base_url}/{endpoint.version}'
-
-	def execute_ta(self, ta: list, dry_mode: bool = False, dict_mode: bool = False, su_login_name: str = None) -> Union[list, dict]:
-		res = self.session.post(f'{self.base_url}/wapi/transaction/execute?dry_mode={str(dry_mode).lower()}&dict_mode={str(dict_mode).lower()}{"" if su_login_name is None else "&su_login_name="+su_login_name}', json=ta)
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return res.json()
-
-	def close(self):
-		self.session.close()
-
-
-def _denullify_dict(d):
-	d = {k:v for k,v in d.items() if v is not None}
-	for k,v in d.items():
-		if isinstance(v, ExplicitNull):
-			d[k] = None
-	return d
diff --git a/4.2/golang/cntl.py b/4.2/golang/cntl.py
deleted file mode 100644
index 424b4d2..0000000
--- a/4.2/golang/cntl.py
+++ /dev/null
@@ -1,4576 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class System(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.system.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.system.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr(APIObject):
-	gpk: str
-	email: str
-	is_own: bool
-	is_sub: bool
-	is_svc: bool
-	sub_id: str
-	svc_id: str
-	is_self: bool
-	last_name: str
-	first_name: str
-	kit_status: int
-	login_name: str
-	description: str
-	is_deletable: bool
-	is_adm_locked: bool
-	parent_login_name: str
-	allow_data_manipulation: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.email is not None and not isinstance(self.email, str):
-			raise ValueError(f"'email' of incorrect type. Expected str, got {type(self.email)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.is_svc, bool):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(self.is_svc)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if self.svc_id is not None and not isinstance(self.svc_id, str):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(self.svc_id)}")
-		if not isinstance(self.is_self, bool):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(self.is_self)}")
-		if self.last_name is not None and not isinstance(self.last_name, str):
-			raise ValueError(f"'last_name' of incorrect type. Expected str, got {type(self.last_name)}")
-		if self.first_name is not None and not isinstance(self.first_name, str):
-			raise ValueError(f"'first_name' of incorrect type. Expected str, got {type(self.first_name)}")
-		if not isinstance(self.kit_status, int):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(self.kit_status)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_deletable, bool):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(self.is_deletable)}")
-		if not isinstance(self.is_adm_locked, bool):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(self.is_adm_locked)}")
-		if not isinstance(self.parent_login_name, str):
-			raise ValueError(f"'parent_login_name' of incorrect type. Expected str, got {type(self.parent_login_name)}")
-		if not isinstance(self.allow_data_manipulation, bool):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(self.allow_data_manipulation)}")
-
-	@staticmethod
-	def create_ta(is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> dict:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		return {'name': 'cntl.mgr.create', 'new': _denullify_dict({'is_svc': is_svc_new, 'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'do_copy_roles': do_copy_roles_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_svc_new: bool = False, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, do_copy_roles_new: bool = True, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = True) -> list:
-		if is_svc_new is not None and not (isinstance(is_svc_new, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_copy_roles_new is not None and not (isinstance(do_copy_roles_new, bool)):
-			raise ValueError(f"'do_copy_roles' of incorrect type. Expected bool, got {type(do_copy_roles_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_svc_new=is_svc_new, sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, do_copy_roles_new=do_copy_roles_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(login_name_old: str) -> dict:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, login_name_old: str) -> list:
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, gpk_list_old: list = None, kit_status_old: int = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, email_regexp_old: str = None, fetch_offset_old: int = None, is_deletable_old: bool = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, full_name_regexp_ic_old: str = None, last_name_regexp_ic_old: str = None, sorting_params_list_old: list = None, first_name_regexp_ic_old: str = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str) or isinstance(svc_id_old, ExplicitNull)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if email_regexp_old is not None and not (isinstance(email_regexp_old, str)):
-			raise ValueError(f"'email_regexp' of incorrect type. Expected str, got {type(email_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deletable_old is not None and not (isinstance(is_deletable_old, bool)):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(is_deletable_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if full_name_regexp_ic_old is not None and not (isinstance(full_name_regexp_ic_old, str)):
-			raise ValueError(f"'full_name_regexp_ic' of incorrect type. Expected str, got {type(full_name_regexp_ic_old)}")
-		if last_name_regexp_ic_old is not None and not (isinstance(last_name_regexp_ic_old, str)):
-			raise ValueError(f"'last_name_regexp_ic' of incorrect type. Expected str, got {type(last_name_regexp_ic_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if first_name_regexp_ic_old is not None and not (isinstance(first_name_regexp_ic_old, str)):
-			raise ValueError(f"'first_name_regexp_ic' of incorrect type. Expected str, got {type(first_name_regexp_ic_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		return {'name': 'cntl.mgr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'is_sub': is_sub_old, 'is_svc': is_svc_old, 'sub_id': sub_id_old, 'svc_id': svc_id_old, 'is_self': is_self_old, 'gpk_list': gpk_list_old, 'kit_status': kit_status_old, 'fetch_limit': fetch_limit_old, 'sub_id_list': sub_id_list_old, 'svc_id_list': svc_id_list_old, 'email_regexp': email_regexp_old, 'fetch_offset': fetch_offset_old, 'is_deletable': is_deletable_old, 'is_adm_locked': is_adm_locked_old, 'sub_id_regexp': sub_id_regexp_old, 'svc_id_regexp': svc_id_regexp_old, 'login_name_list': login_name_list_old, 'login_name_regexp': login_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'full_name_regexp_ic': full_name_regexp_ic_old, 'last_name_regexp_ic': last_name_regexp_ic_old, 'sorting_params_list': sorting_params_list_old, 'first_name_regexp_ic': first_name_regexp_ic_old, 'parent_login_name_list': parent_login_name_list_old, 'allow_data_manipulation': allow_data_manipulation_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, is_sub_old: bool = None, is_svc_old: bool = None, sub_id_old: str = None, svc_id_old: str = None, is_self_old: bool = None, gpk_list_old: list = None, kit_status_old: int = None, fetch_limit_old: int = None, sub_id_list_old: list = None, svc_id_list_old: list = None, email_regexp_old: str = None, fetch_offset_old: int = None, is_deletable_old: bool = None, is_adm_locked_old: bool = None, sub_id_regexp_old: str = None, svc_id_regexp_old: str = None, login_name_list_old: list = None, login_name_regexp_old: str = None, filter_params_dict_old: dict = None, full_name_regexp_ic_old: str = None, last_name_regexp_ic_old: str = None, sorting_params_list_old: list = None, first_name_regexp_ic_old: str = None, parent_login_name_list_old: list = None, allow_data_manipulation_old: bool = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if is_svc_old is not None and not (isinstance(is_svc_old, bool)):
-			raise ValueError(f"'is_svc' of incorrect type. Expected bool, got {type(is_svc_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if svc_id_old is not None and not (isinstance(svc_id_old, str) or isinstance(svc_id_old, ExplicitNull)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_old)}")
-		if is_self_old is not None and not (isinstance(is_self_old, bool)):
-			raise ValueError(f"'is_self' of incorrect type. Expected bool, got {type(is_self_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if kit_status_old is not None and not (isinstance(kit_status_old, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if svc_id_list_old is not None and not (isinstance(svc_id_list_old, list)):
-			raise ValueError(f"'svc_id_list' of incorrect type. Expected list, got {type(svc_id_list_old)}")
-		if email_regexp_old is not None and not (isinstance(email_regexp_old, str)):
-			raise ValueError(f"'email_regexp' of incorrect type. Expected str, got {type(email_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deletable_old is not None and not (isinstance(is_deletable_old, bool)):
-			raise ValueError(f"'is_deletable' of incorrect type. Expected bool, got {type(is_deletable_old)}")
-		if is_adm_locked_old is not None and not (isinstance(is_adm_locked_old, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if svc_id_regexp_old is not None and not (isinstance(svc_id_regexp_old, str)):
-			raise ValueError(f"'svc_id_regexp' of incorrect type. Expected str, got {type(svc_id_regexp_old)}")
-		if login_name_list_old is not None and not (isinstance(login_name_list_old, list)):
-			raise ValueError(f"'login_name_list' of incorrect type. Expected list, got {type(login_name_list_old)}")
-		if login_name_regexp_old is not None and not (isinstance(login_name_regexp_old, str)):
-			raise ValueError(f"'login_name_regexp' of incorrect type. Expected str, got {type(login_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if full_name_regexp_ic_old is not None and not (isinstance(full_name_regexp_ic_old, str)):
-			raise ValueError(f"'full_name_regexp_ic' of incorrect type. Expected str, got {type(full_name_regexp_ic_old)}")
-		if last_name_regexp_ic_old is not None and not (isinstance(last_name_regexp_ic_old, str)):
-			raise ValueError(f"'last_name_regexp_ic' of incorrect type. Expected str, got {type(last_name_regexp_ic_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if first_name_regexp_ic_old is not None and not (isinstance(first_name_regexp_ic_old, str)):
-			raise ValueError(f"'first_name_regexp_ic' of incorrect type. Expected str, got {type(first_name_regexp_ic_old)}")
-		if parent_login_name_list_old is not None and not (isinstance(parent_login_name_list_old, list)):
-			raise ValueError(f"'parent_login_name_list' of incorrect type. Expected list, got {type(parent_login_name_list_old)}")
-		if allow_data_manipulation_old is not None and not (isinstance(allow_data_manipulation_old, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, is_sub_old=is_sub_old, is_svc_old=is_svc_old, sub_id_old=sub_id_old, svc_id_old=svc_id_old, is_self_old=is_self_old, gpk_list_old=gpk_list_old, kit_status_old=kit_status_old, fetch_limit_old=fetch_limit_old, sub_id_list_old=sub_id_list_old, svc_id_list_old=svc_id_list_old, email_regexp_old=email_regexp_old, fetch_offset_old=fetch_offset_old, is_deletable_old=is_deletable_old, is_adm_locked_old=is_adm_locked_old, sub_id_regexp_old=sub_id_regexp_old, svc_id_regexp_old=svc_id_regexp_old, login_name_list_old=login_name_list_old, login_name_regexp_old=login_name_regexp_old, filter_params_dict_old=filter_params_dict_old, full_name_regexp_ic_old=full_name_regexp_ic_old, last_name_regexp_ic_old=last_name_regexp_ic_old, sorting_params_list_old=sorting_params_list_old, first_name_regexp_ic_old=first_name_regexp_ic_old, parent_login_name_list_old=parent_login_name_list_old, allow_data_manipulation_old=allow_data_manipulation_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> dict:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		return {'name': 'cntl.mgr.update', 'new': _denullify_dict({'sub_id': sub_id_new, 'svc_id': svc_id_new, 'kit_status': kit_status_new, 'login_name': login_name_new, 'description': description_new, 'is_adm_locked': is_adm_locked_new, 'allow_data_manipulation': allow_data_manipulation_new}), 'old': _denullify_dict({'login_name': login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, login_name_old: str, sub_id_new: Union[str, ExplicitNull] = None, svc_id_new: str = None, kit_status_new: int = None, login_name_new: str = None, description_new: Union[str, ExplicitNull] = None, is_adm_locked_new: bool = None, allow_data_manipulation_new: bool = None) -> list:
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if svc_id_new is not None and not (isinstance(svc_id_new, str)):
-			raise ValueError(f"'svc_id' of incorrect type. Expected str, got {type(svc_id_new)}")
-		if kit_status_new is not None and not (isinstance(kit_status_new, int)):
-			raise ValueError(f"'kit_status' of incorrect type. Expected int, got {type(kit_status_new)}")
-		if login_name_new is not None and not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_adm_locked_new is not None and not (isinstance(is_adm_locked_new, bool)):
-			raise ValueError(f"'is_adm_locked' of incorrect type. Expected bool, got {type(is_adm_locked_new)}")
-		if allow_data_manipulation_new is not None and not (isinstance(allow_data_manipulation_new, bool)):
-			raise ValueError(f"'allow_data_manipulation' of incorrect type. Expected bool, got {type(allow_data_manipulation_new)}")
-		if not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sub_id_new=sub_id_new, svc_id_new=svc_id_new, kit_status_new=kit_status_new, login_name_new=login_name_new, description_new=description_new, is_adm_locked_new=is_adm_locked_new, allow_data_manipulation_new=allow_data_manipulation_new, login_name_old=login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Error(APIObject):
-	gpk: str
-	code: int
-	type: int
-	system: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.type, int):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(self.type)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-
-	@staticmethod
-	def create_ta(code_new: int, type_new: int, system_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		return {'name': 'cntl.error.create', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, type_new: int, system_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, type_new=type_new, system_new=system_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int, type_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int, type_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(system_old: str = None, gpk_list_old: list = None, code_list_old: list = None, type_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'system': system_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'type_list': type_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, system_old: str = None, gpk_list_old: list = None, code_list_old: list = None, type_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(system_old=system_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, type_list_old=type_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		return {'name': 'cntl.error.update', 'new': _denullify_dict({'code': code_new, 'type': type_new, 'system': system_new}), 'old': _denullify_dict({'code': code_old, 'type': type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, type_old: int, code_new: int = None, type_new: int = None, system_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if type_new is not None and not (isinstance(type_new, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-		if not (isinstance(type_old, int)):
-			raise ValueError(f"'type' of incorrect type. Expected int, got {type(type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, type_new=type_new, system_new=system_new, code_old=code_old, type_old=type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Column(APIObject):
-	gpk: str
-	name: str
-	is_wapi: bool
-	ref_gfk: str
-	data_type: str
-	table_gfk: str
-	table_name: str
-	is_nullable: bool
-	is_required: bool
-	is_deprecated: bool
-	attribute_name: str
-	ref_target_gfk: str
-	is_ot_global_ref: bool
-	object_type_fq_name: str
-	pg_attribute_exists: bool
-	use_ref_column_language_attributes: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_wapi, bool):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(self.is_wapi)}")
-		if self.ref_gfk is not None and not isinstance(self.ref_gfk, str):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(self.ref_gfk)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.table_gfk, str):
-			raise ValueError(f"'table_gfk' of incorrect type. Expected str, got {type(self.table_gfk)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_nullable, bool):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(self.is_nullable)}")
-		if not isinstance(self.is_required, bool):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(self.is_required)}")
-		if not isinstance(self.is_deprecated, bool):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(self.is_deprecated)}")
-		if not isinstance(self.attribute_name, str):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(self.attribute_name)}")
-		if self.ref_target_gfk is not None and not isinstance(self.ref_target_gfk, str):
-			raise ValueError(f"'ref_target_gfk' of incorrect type. Expected str, got {type(self.ref_target_gfk)}")
-		if not isinstance(self.is_ot_global_ref, bool):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(self.is_ot_global_ref)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.pg_attribute_exists, bool):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(self.pg_attribute_exists)}")
-		if not isinstance(self.use_ref_column_language_attributes, bool):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(self.use_ref_column_language_attributes)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_gfk_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_gfk_new is not None and not (isinstance(ref_gfk_new, str) or isinstance(ref_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(ref_gfk_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		return {'name': 'cntl.column.create', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_gfk': ref_gfk_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_wapi_new: bool, data_type_new: str, table_name_new: str, is_nullable_new: bool, is_required_new: bool, ref_gfk_new: Union[str, ExplicitNull] = None, is_deprecated_new: bool = False, attribute_name_new: str = None, is_ot_global_ref_new: bool = False, use_ref_column_language_attributes_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_gfk_new is not None and not (isinstance(ref_gfk_new, str) or isinstance(ref_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(ref_gfk_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_gfk_new=ref_gfk_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		return {'name': 'cntl.column.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old, 'do_ref_set_null': do_ref_set_null_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str, do_ref_set_null_old: bool = None) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if do_ref_set_null_old is not None and not (isinstance(do_ref_set_null_old, bool)):
-			raise ValueError(f"'do_ref_set_null' of incorrect type. Expected bool, got {type(do_ref_set_null_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old, do_ref_set_null_old=do_ref_set_null_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_wapi_old: bool = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, table_name_list_old: list = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> dict:
-		if is_wapi_old is not None and not (isinstance(is_wapi_old, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		return {'name': 'cntl.column.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_wapi': is_wapi_old, 'gpk_list': gpk_list_old, 'data_type': data_type_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_deprecated': is_deprecated_old, 'table_name_list': table_name_list_old, 'is_ot_global_ref': is_ot_global_ref_old, 'filter_params_dict': filter_params_dict_old, 'pg_attribute_exists': pg_attribute_exists_old, 'sorting_params_list': sorting_params_list_old, 'use_ref_column_language_attributes': use_ref_column_language_attributes_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_wapi_old: bool = None, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_deprecated_old: bool = None, table_name_list_old: list = None, is_ot_global_ref_old: bool = None, filter_params_dict_old: dict = None, pg_attribute_exists_old: bool = None, sorting_params_list_old: list = None, use_ref_column_language_attributes_old: bool = None) -> list:
-		if is_wapi_old is not None and not (isinstance(is_wapi_old, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_deprecated_old is not None and not (isinstance(is_deprecated_old, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_ot_global_ref_old is not None and not (isinstance(is_ot_global_ref_old, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if pg_attribute_exists_old is not None and not (isinstance(pg_attribute_exists_old, bool)):
-			raise ValueError(f"'pg_attribute_exists' of incorrect type. Expected bool, got {type(pg_attribute_exists_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_ref_column_language_attributes_old is not None and not (isinstance(use_ref_column_language_attributes_old, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_wapi_old=is_wapi_old, gpk_list_old=gpk_list_old, data_type_old=data_type_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_deprecated_old=is_deprecated_old, table_name_list_old=table_name_list_old, is_ot_global_ref_old=is_ot_global_ref_old, filter_params_dict_old=filter_params_dict_old, pg_attribute_exists_old=pg_attribute_exists_old, sorting_params_list_old=sorting_params_list_old, use_ref_column_language_attributes_old=use_ref_column_language_attributes_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_gfk_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_gfk_new is not None and not (isinstance(ref_gfk_new, str) or isinstance(ref_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(ref_gfk_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.column.update', 'new': _denullify_dict({'name': name_new, 'is_wapi': is_wapi_new, 'ref_gfk': ref_gfk_new, 'data_type': data_type_new, 'table_name': table_name_new, 'is_nullable': is_nullable_new, 'is_required': is_required_new, 'is_deprecated': is_deprecated_new, 'attribute_name': attribute_name_new, 'is_ot_global_ref': is_ot_global_ref_new, 'use_ref_column_language_attributes': use_ref_column_language_attributes_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, is_wapi_new: bool = None, ref_gfk_new: Union[str, ExplicitNull] = None, data_type_new: str = None, table_name_new: str = None, is_nullable_new: bool = None, is_required_new: bool = None, is_deprecated_new: bool = None, attribute_name_new: str = None, is_ot_global_ref_new: bool = None, use_ref_column_language_attributes_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_wapi_new is not None and not (isinstance(is_wapi_new, bool)):
-			raise ValueError(f"'is_wapi' of incorrect type. Expected bool, got {type(is_wapi_new)}")
-		if ref_gfk_new is not None and not (isinstance(ref_gfk_new, str) or isinstance(ref_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_gfk' of incorrect type. Expected str, got {type(ref_gfk_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if is_nullable_new is not None and not (isinstance(is_nullable_new, bool)):
-			raise ValueError(f"'is_nullable' of incorrect type. Expected bool, got {type(is_nullable_new)}")
-		if is_required_new is not None and not (isinstance(is_required_new, bool)):
-			raise ValueError(f"'is_required' of incorrect type. Expected bool, got {type(is_required_new)}")
-		if is_deprecated_new is not None and not (isinstance(is_deprecated_new, bool)):
-			raise ValueError(f"'is_deprecated' of incorrect type. Expected bool, got {type(is_deprecated_new)}")
-		if attribute_name_new is not None and not (isinstance(attribute_name_new, str)):
-			raise ValueError(f"'attribute_name' of incorrect type. Expected str, got {type(attribute_name_new)}")
-		if is_ot_global_ref_new is not None and not (isinstance(is_ot_global_ref_new, bool)):
-			raise ValueError(f"'is_ot_global_ref' of incorrect type. Expected bool, got {type(is_ot_global_ref_new)}")
-		if use_ref_column_language_attributes_new is not None and not (isinstance(use_ref_column_language_attributes_new, bool)):
-			raise ValueError(f"'use_ref_column_language_attributes' of incorrect type. Expected bool, got {type(use_ref_column_language_attributes_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_wapi_new=is_wapi_new, ref_gfk_new=ref_gfk_new, data_type_new=data_type_new, table_name_new=table_name_new, is_nullable_new=is_nullable_new, is_required_new=is_required_new, is_deprecated_new=is_deprecated_new, attribute_name_new=attribute_name_new, is_ot_global_ref_new=is_ot_global_ref_new, use_ref_column_language_attributes_new=use_ref_column_language_attributes_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint(APIObject):
-	gpk: str
-	name: str
-	type: str
-	ref_name: str
-	dblvl_name: str
-	table_name: str
-	is_function: bool
-	is_api_level: bool
-	col_name_list: list
-	join_operator: str
-	is_referencing: bool
-	is_join_default: bool
-	dblvl_table_name: str
-	is_referenceable: bool
-	col_data_type_list: list
-	join_operands_exchange: bool
-	join_grants_read_access_from_child: bool
-	join_left_function_format_template: str
-	join_grants_read_access_from_parent: bool
-	join_right_function_format_template: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.ref_name is not None and not isinstance(self.ref_name, str):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(self.ref_name)}")
-		if self.dblvl_name is not None and not isinstance(self.dblvl_name, str):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(self.dblvl_name)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.is_function, bool):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(self.is_function)}")
-		if not isinstance(self.is_api_level, bool):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(self.is_api_level)}")
-		if not isinstance(self.col_name_list, list):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(self.col_name_list)}")
-		if not isinstance(self.join_operator, str):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(self.join_operator)}")
-		if not isinstance(self.is_referencing, bool):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(self.is_referencing)}")
-		if not isinstance(self.is_join_default, bool):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(self.is_join_default)}")
-		if self.dblvl_table_name is not None and not isinstance(self.dblvl_table_name, str):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(self.dblvl_table_name)}")
-		if not isinstance(self.is_referenceable, bool):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(self.is_referenceable)}")
-		if not isinstance(self.col_data_type_list, list):
-			raise ValueError(f"'col_data_type_list' of incorrect type. Expected list, got {type(self.col_data_type_list)}")
-		if not isinstance(self.join_operands_exchange, bool):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(self.join_operands_exchange)}")
-		if not isinstance(self.join_grants_read_access_from_child, bool):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(self.join_grants_read_access_from_child)}")
-		if not isinstance(self.join_left_function_format_template, str):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(self.join_left_function_format_template)}")
-		if not isinstance(self.join_grants_read_access_from_parent, bool):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(self.join_grants_read_access_from_parent)}")
-		if not isinstance(self.join_right_function_format_template, str):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(self.join_right_function_format_template)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = False, join_grants_read_access_from_child_new: bool = False, join_left_function_format_template_new: str = '%s', join_grants_read_access_from_parent_new: bool = False, join_right_function_format_template_new: str = '%s') -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-
-		return {'name': 'cntl.constraint.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_operands_exchange': join_operands_exchange_new, 'join_grants_read_access_from_child': join_grants_read_access_from_child_new, 'join_left_function_format_template': join_left_function_format_template_new, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_new, 'join_right_function_format_template': join_right_function_format_template_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, table_name_new: str, col_name_list_new: list, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, join_operator_new: str = '=', is_join_default_new: bool = False, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = False, join_grants_read_access_from_child_new: bool = False, join_left_function_format_template_new: str = '%s', join_grants_read_access_from_parent_new: bool = False, join_right_function_format_template_new: str = '%s') -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_operands_exchange_new=join_operands_exchange_new, join_grants_read_access_from_child_new=join_grants_read_access_from_child_new, join_left_function_format_template_new=join_left_function_format_template_new, join_grants_read_access_from_parent_new=join_grants_read_access_from_parent_new, join_right_function_format_template_new=join_right_function_format_template_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, table_name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, table_name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, gpk_list_old: list = None, ref_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_referencing_old: bool = None, is_join_default_old: bool = None, table_name_list_old: list = None, is_referenceable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_from_child_old: bool = None, join_grants_read_access_from_parent_old: bool = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_referencing_old is not None and not (isinstance(is_referencing_old, bool)):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(is_referencing_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_referenceable_old is not None and not (isinstance(is_referenceable_old, bool)):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(is_referenceable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_from_child_old is not None and not (isinstance(join_grants_read_access_from_child_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_old)}")
-		if join_grants_read_access_from_parent_old is not None and not (isinstance(join_grants_read_access_from_parent_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_old)}")
-
-		return {'name': 'cntl.constraint.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'gpk_list': gpk_list_old, 'ref_name': ref_name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_function': is_function_old, 'fetch_offset': fetch_offset_old, 'is_api_level': is_api_level_old, 'is_referencing': is_referencing_old, 'is_join_default': is_join_default_old, 'table_name_list': table_name_list_old, 'is_referenceable': is_referenceable_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'join_grants_read_access_from_child': join_grants_read_access_from_child_old, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, gpk_list_old: list = None, ref_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, is_function_old: bool = None, fetch_offset_old: int = None, is_api_level_old: bool = None, is_referencing_old: bool = None, is_join_default_old: bool = None, table_name_list_old: list = None, is_referenceable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, join_grants_read_access_from_child_old: bool = None, join_grants_read_access_from_parent_old: bool = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if ref_name_old is not None and not (isinstance(ref_name_old, str) or isinstance(ref_name_old, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_function_old is not None and not (isinstance(is_function_old, bool)):
-			raise ValueError(f"'is_function' of incorrect type. Expected bool, got {type(is_function_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_api_level_old is not None and not (isinstance(is_api_level_old, bool)):
-			raise ValueError(f"'is_api_level' of incorrect type. Expected bool, got {type(is_api_level_old)}")
-		if is_referencing_old is not None and not (isinstance(is_referencing_old, bool)):
-			raise ValueError(f"'is_referencing' of incorrect type. Expected bool, got {type(is_referencing_old)}")
-		if is_join_default_old is not None and not (isinstance(is_join_default_old, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if is_referenceable_old is not None and not (isinstance(is_referenceable_old, bool)):
-			raise ValueError(f"'is_referenceable' of incorrect type. Expected bool, got {type(is_referenceable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if join_grants_read_access_from_child_old is not None and not (isinstance(join_grants_read_access_from_child_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_old)}")
-		if join_grants_read_access_from_parent_old is not None and not (isinstance(join_grants_read_access_from_parent_old, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, gpk_list_old=gpk_list_old, ref_name_old=ref_name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_function_old=is_function_old, fetch_offset_old=fetch_offset_old, is_api_level_old=is_api_level_old, is_referencing_old=is_referencing_old, is_join_default_old=is_join_default_old, table_name_list_old=table_name_list_old, is_referenceable_old=is_referenceable_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, join_grants_read_access_from_child_old=join_grants_read_access_from_child_old, join_grants_read_access_from_parent_old=join_grants_read_access_from_parent_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = None, join_grants_read_access_from_child_new: bool = None, join_left_function_format_template_new: str = None, join_grants_read_access_from_parent_new: bool = None, join_right_function_format_template_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		return {'name': 'cntl.constraint.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'ref_name': ref_name_new, 'dblvl_name': dblvl_name_new, 'table_name': table_name_new, 'col_name_list': col_name_list_new, 'join_operator': join_operator_new, 'is_join_default': is_join_default_new, 'dblvl_table_name': dblvl_table_name_new, 'join_operands_exchange': join_operands_exchange_new, 'join_grants_read_access_from_child': join_grants_read_access_from_child_new, 'join_left_function_format_template': join_left_function_format_template_new, 'join_grants_read_access_from_parent': join_grants_read_access_from_parent_new, 'join_right_function_format_template': join_right_function_format_template_new}), 'old': _denullify_dict({'name': name_old, 'table_name': table_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, table_name_old: str, name_new: str = None, type_new: str = None, ref_name_new: Union[str, ExplicitNull] = None, dblvl_name_new: Union[str, ExplicitNull] = None, table_name_new: str = None, col_name_list_new: list = None, join_operator_new: str = None, is_join_default_new: bool = None, dblvl_table_name_new: Union[str, ExplicitNull] = None, join_operands_exchange_new: bool = None, join_grants_read_access_from_child_new: bool = None, join_left_function_format_template_new: str = None, join_grants_read_access_from_parent_new: bool = None, join_right_function_format_template_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ref_name_new is not None and not (isinstance(ref_name_new, str) or isinstance(ref_name_new, ExplicitNull)):
-			raise ValueError(f"'ref_name' of incorrect type. Expected str, got {type(ref_name_new)}")
-		if dblvl_name_new is not None and not (isinstance(dblvl_name_new, str) or isinstance(dblvl_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_name' of incorrect type. Expected str, got {type(dblvl_name_new)}")
-		if table_name_new is not None and not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if col_name_list_new is not None and not (isinstance(col_name_list_new, list)):
-			raise ValueError(f"'col_name_list' of incorrect type. Expected list, got {type(col_name_list_new)}")
-		if join_operator_new is not None and not (isinstance(join_operator_new, str)):
-			raise ValueError(f"'join_operator' of incorrect type. Expected str, got {type(join_operator_new)}")
-		if is_join_default_new is not None and not (isinstance(is_join_default_new, bool)):
-			raise ValueError(f"'is_join_default' of incorrect type. Expected bool, got {type(is_join_default_new)}")
-		if dblvl_table_name_new is not None and not (isinstance(dblvl_table_name_new, str) or isinstance(dblvl_table_name_new, ExplicitNull)):
-			raise ValueError(f"'dblvl_table_name' of incorrect type. Expected str, got {type(dblvl_table_name_new)}")
-		if join_operands_exchange_new is not None and not (isinstance(join_operands_exchange_new, bool)):
-			raise ValueError(f"'join_operands_exchange' of incorrect type. Expected bool, got {type(join_operands_exchange_new)}")
-		if join_grants_read_access_from_child_new is not None and not (isinstance(join_grants_read_access_from_child_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_child' of incorrect type. Expected bool, got {type(join_grants_read_access_from_child_new)}")
-		if join_left_function_format_template_new is not None and not (isinstance(join_left_function_format_template_new, str)):
-			raise ValueError(f"'join_left_function_format_template' of incorrect type. Expected str, got {type(join_left_function_format_template_new)}")
-		if join_grants_read_access_from_parent_new is not None and not (isinstance(join_grants_read_access_from_parent_new, bool)):
-			raise ValueError(f"'join_grants_read_access_from_parent' of incorrect type. Expected bool, got {type(join_grants_read_access_from_parent_new)}")
-		if join_right_function_format_template_new is not None and not (isinstance(join_right_function_format_template_new, str)):
-			raise ValueError(f"'join_right_function_format_template' of incorrect type. Expected str, got {type(join_right_function_format_template_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, ref_name_new=ref_name_new, dblvl_name_new=dblvl_name_new, table_name_new=table_name_new, col_name_list_new=col_name_list_new, join_operator_new=join_operator_new, is_join_default_new=is_join_default_new, dblvl_table_name_new=dblvl_table_name_new, join_operands_exchange_new=join_operands_exchange_new, join_grants_read_access_from_child_new=join_grants_read_access_from_child_new, join_left_function_format_template_new=join_left_function_format_template_new, join_grants_read_access_from_parent_new=join_grants_read_access_from_parent_new, join_right_function_format_template_new=join_right_function_format_template_new, name_old=name_old, table_name_old=table_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ErrorType(APIObject):
-	gpk: str
-	code: int
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'cntl.error_type.create', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(code_old: int) -> dict:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, code_old: int) -> list:
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.error_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(code_old: int, code_new: int = None, name_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		return {'name': 'cntl.error_type.update', 'new': _denullify_dict({'code': code_new, 'name': name_new}), 'old': _denullify_dict({'code': code_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, code_old: int, code_new: int = None, name_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(code_old, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, name_new=name_new, code_old=code_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Table(APIObject):
-	gpk: str
-	name: str
-	system: str
-	is_log_dst: bool
-	is_log_src: bool
-	is_lang_dst: bool
-	is_lang_src: bool
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	content_gender: str
-	pg_cls_exists: bool
-	object_type_fq_name: str
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.content_gender, str):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(self.content_gender)}")
-		if not isinstance(self.pg_cls_exists, bool):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(self.pg_cls_exists)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def create_ta(name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		return {'name': 'cntl.table.create', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, system_new: str, is_lang_dst_new: bool, is_lang_src_new: bool, content_gender_new: str, do_activate_global_pk2obj_new: bool, is_log_dst_new: bool = False, is_log_src_new: bool = False, is_otattr_dst_new: bool = False, is_otattr_src_new: bool = False, do_imp_from_dd_new: bool = True, object_type_name_new: str = None, do_create_global_ref_params_new: bool = True, object_type_grants_read_access_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, do_del_cols_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		return {'name': 'cntl.table.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'do_del_cols': do_del_cols_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, do_del_cols_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if do_del_cols_old is not None and not (isinstance(do_del_cols_old, bool)):
-			raise ValueError(f"'do_del_cols' of incorrect type. Expected bool, got {type(do_del_cols_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, do_del_cols_old=do_del_cols_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(system_old: str = None, gpk_list_old: list = None, name_list_old: list = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> dict:
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		return {'name': 'cntl.table.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'system': system_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'is_log_dst': is_log_dst_old, 'is_log_src': is_log_src_old, 'fetch_limit': fetch_limit_old, 'is_lang_dst': is_lang_dst_old, 'is_lang_src': is_lang_src_old, 'fetch_offset': fetch_offset_old, 'is_otattr_dst': is_otattr_dst_old, 'is_otattr_src': is_otattr_src_old, 'pg_cls_exists': pg_cls_exists_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'do_activate_global_pk2obj': do_activate_global_pk2obj_old, 'object_type_grants_read_access': object_type_grants_read_access_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, system_old: str = None, gpk_list_old: list = None, name_list_old: list = None, is_log_dst_old: bool = None, is_log_src_old: bool = None, fetch_limit_old: int = None, is_lang_dst_old: bool = None, is_lang_src_old: bool = None, fetch_offset_old: int = None, is_otattr_dst_old: bool = None, is_otattr_src_old: bool = None, pg_cls_exists_old: bool = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, do_activate_global_pk2obj_old: bool = None, object_type_grants_read_access_old: bool = None) -> list:
-		if system_old is not None and not (isinstance(system_old, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if is_log_dst_old is not None and not (isinstance(is_log_dst_old, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_old)}")
-		if is_log_src_old is not None and not (isinstance(is_log_src_old, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_lang_dst_old is not None and not (isinstance(is_lang_dst_old, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_old)}")
-		if is_lang_src_old is not None and not (isinstance(is_lang_src_old, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_otattr_dst_old is not None and not (isinstance(is_otattr_dst_old, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_old)}")
-		if is_otattr_src_old is not None and not (isinstance(is_otattr_src_old, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_old)}")
-		if pg_cls_exists_old is not None and not (isinstance(pg_cls_exists_old, bool)):
-			raise ValueError(f"'pg_cls_exists' of incorrect type. Expected bool, got {type(pg_cls_exists_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_activate_global_pk2obj_old is not None and not (isinstance(do_activate_global_pk2obj_old, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_old)}")
-		if object_type_grants_read_access_old is not None and not (isinstance(object_type_grants_read_access_old, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(system_old=system_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, is_log_dst_old=is_log_dst_old, is_log_src_old=is_log_src_old, fetch_limit_old=fetch_limit_old, is_lang_dst_old=is_lang_dst_old, is_lang_src_old=is_lang_src_old, fetch_offset_old=fetch_offset_old, is_otattr_dst_old=is_otattr_dst_old, is_otattr_src_old=is_otattr_src_old, pg_cls_exists_old=pg_cls_exists_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, do_activate_global_pk2obj_old=do_activate_global_pk2obj_old, object_type_grants_read_access_old=object_type_grants_read_access_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.table.update', 'new': _denullify_dict({'name': name_new, 'system': system_new, 'is_log_dst': is_log_dst_new, 'is_log_src': is_log_src_new, 'is_lang_dst': is_lang_dst_new, 'is_lang_src': is_lang_src_new, 'is_otattr_dst': is_otattr_dst_new, 'is_otattr_src': is_otattr_src_new, 'content_gender': content_gender_new, 'do_imp_from_dd': do_imp_from_dd_new, 'object_type_name': object_type_name_new, 'do_imp_from_dd_upd_cols': do_imp_from_dd_upd_cols_new, 'do_activate_global_pk2obj': do_activate_global_pk2obj_new, 'do_create_global_ref_params': do_create_global_ref_params_new, 'object_type_grants_read_access': object_type_grants_read_access_new, 'make_generic_object_type_permissions': make_generic_object_type_permissions_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, system_new: str = None, is_log_dst_new: bool = None, is_log_src_new: bool = None, is_lang_dst_new: bool = None, is_lang_src_new: bool = None, is_otattr_dst_new: bool = None, is_otattr_src_new: bool = None, content_gender_new: str = None, do_imp_from_dd_new: bool = None, object_type_name_new: str = None, do_imp_from_dd_upd_cols_new: bool = None, do_activate_global_pk2obj_new: bool = None, do_create_global_ref_params_new: bool = None, object_type_grants_read_access_new: bool = None, make_generic_object_type_permissions_new: bool = True) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if system_new is not None and not (isinstance(system_new, str)):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(system_new)}")
-		if is_log_dst_new is not None and not (isinstance(is_log_dst_new, bool)):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(is_log_dst_new)}")
-		if is_log_src_new is not None and not (isinstance(is_log_src_new, bool)):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(is_log_src_new)}")
-		if is_lang_dst_new is not None and not (isinstance(is_lang_dst_new, bool)):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(is_lang_dst_new)}")
-		if is_lang_src_new is not None and not (isinstance(is_lang_src_new, bool)):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(is_lang_src_new)}")
-		if is_otattr_dst_new is not None and not (isinstance(is_otattr_dst_new, bool)):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(is_otattr_dst_new)}")
-		if is_otattr_src_new is not None and not (isinstance(is_otattr_src_new, bool)):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(is_otattr_src_new)}")
-		if content_gender_new is not None and not (isinstance(content_gender_new, str)):
-			raise ValueError(f"'content_gender' of incorrect type. Expected str, got {type(content_gender_new)}")
-		if do_imp_from_dd_new is not None and not (isinstance(do_imp_from_dd_new, bool)):
-			raise ValueError(f"'do_imp_from_dd' of incorrect type. Expected bool, got {type(do_imp_from_dd_new)}")
-		if object_type_name_new is not None and not (isinstance(object_type_name_new, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_new)}")
-		if do_imp_from_dd_upd_cols_new is not None and not (isinstance(do_imp_from_dd_upd_cols_new, bool)):
-			raise ValueError(f"'do_imp_from_dd_upd_cols' of incorrect type. Expected bool, got {type(do_imp_from_dd_upd_cols_new)}")
-		if do_activate_global_pk2obj_new is not None and not (isinstance(do_activate_global_pk2obj_new, bool)):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(do_activate_global_pk2obj_new)}")
-		if do_create_global_ref_params_new is not None and not (isinstance(do_create_global_ref_params_new, bool)):
-			raise ValueError(f"'do_create_global_ref_params' of incorrect type. Expected bool, got {type(do_create_global_ref_params_new)}")
-		if object_type_grants_read_access_new is not None and not (isinstance(object_type_grants_read_access_new, bool)):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(object_type_grants_read_access_new)}")
-		if make_generic_object_type_permissions_new is not None and not (isinstance(make_generic_object_type_permissions_new, bool)):
-			raise ValueError(f"'make_generic_object_type_permissions' of incorrect type. Expected bool, got {type(make_generic_object_type_permissions_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, system_new=system_new, is_log_dst_new=is_log_dst_new, is_log_src_new=is_log_src_new, is_lang_dst_new=is_lang_dst_new, is_lang_src_new=is_lang_src_new, is_otattr_dst_new=is_otattr_dst_new, is_otattr_src_new=is_otattr_src_new, content_gender_new=content_gender_new, do_imp_from_dd_new=do_imp_from_dd_new, object_type_name_new=object_type_name_new, do_imp_from_dd_upd_cols_new=do_imp_from_dd_upd_cols_new, do_activate_global_pk2obj_new=do_activate_global_pk2obj_new, do_create_global_ref_params_new=do_create_global_ref_params_new, object_type_grants_read_access_new=object_type_grants_read_access_new, make_generic_object_type_permissions_new=make_generic_object_type_permissions_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role(APIObject):
-	gpk: str
-	name: str
-	system: str
-	fq_name: str
-	is_role: bool
-	position: int
-	is_admin_role: bool
-	hierarchy_gfk_list: list
-	is_directly_assigned: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_role, bool):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(self.is_role)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_admin_role, bool):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(self.is_admin_role)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if not isinstance(self.is_directly_assigned, bool):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(self.is_directly_assigned)}")
-
-	@staticmethod
-	def create_ta(fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> dict:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		return {'name': 'cntl.role.create', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fq_name_new: str, is_role_new: bool, is_admin_role_new: bool, position_new: int = None) -> list:
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_role_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> dict:
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		return {'name': 'cntl.role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_role': is_role_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'is_admin_role': is_admin_role_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_directly_assigned': is_directly_assigned_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_role_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, is_admin_role_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_directly_assigned_old: bool = None) -> list:
-		if is_role_old is not None and not (isinstance(is_role_old, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if is_admin_role_old is not None and not (isinstance(is_admin_role_old, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_directly_assigned_old is not None and not (isinstance(is_directly_assigned_old, bool)):
-			raise ValueError(f"'is_directly_assigned' of incorrect type. Expected bool, got {type(is_directly_assigned_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_role_old=is_role_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, is_admin_role_old=is_admin_role_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_directly_assigned_old=is_directly_assigned_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> dict:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'cntl.role.update', 'new': _denullify_dict({'fq_name': fq_name_new, 'is_role': is_role_new, 'position': position_new, 'is_admin_role': is_admin_role_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, fq_name_new: str = None, is_role_new: bool = None, position_new: int = None, is_admin_role_new: bool = None) -> list:
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if is_role_new is not None and not (isinstance(is_role_new, bool)):
-			raise ValueError(f"'is_role' of incorrect type. Expected bool, got {type(is_role_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if is_admin_role_new is not None and not (isinstance(is_admin_role_new, bool)):
-			raise ValueError(f"'is_admin_role' of incorrect type. Expected bool, got {type(is_admin_role_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fq_name_new=fq_name_new, is_role_new=is_role_new, position_new=position_new, is_admin_role_new=is_admin_role_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2role(APIObject):
-	gpk: str
-	role: str
-	system: str
-	role_fq_name: str
-	mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role, str):
-			raise ValueError(f"'role' of incorrect type. Expected str, got {type(self.role)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.mgr2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'mgr_login_name': mgr_login_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, mgr_login_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, mgr_login_name_old=mgr_login_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'role_fq_name_list': role_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, role_fq_name_list_old=role_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Role2role(APIObject):
-	gpk: str
-	role_fq_name: str
-	role_is_role: bool
-	contained_role_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.role_fq_name, str):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(self.role_fq_name)}")
-		if not isinstance(self.role_is_role, bool):
-			raise ValueError(f"'role_is_role' of incorrect type. Expected bool, got {type(self.role_is_role)}")
-		if not isinstance(self.contained_role_fq_name, str):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(self.contained_role_fq_name)}")
-
-	@staticmethod
-	def create_ta(role_fq_name_new: str, contained_role_fq_name_new: str) -> dict:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		return {'name': 'cntl.role2role.create', 'new': _denullify_dict({'role_fq_name': role_fq_name_new, 'contained_role_fq_name': contained_role_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, role_fq_name_new: str, contained_role_fq_name_new: str) -> list:
-		if not (isinstance(role_fq_name_new, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_new)}")
-		if not (isinstance(contained_role_fq_name_new, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(role_fq_name_new=role_fq_name_new, contained_role_fq_name_new=contained_role_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> dict:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		return {'name': 'cntl.role2role.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'role_fq_name': role_fq_name_old, 'contained_role_fq_name': contained_role_fq_name_old, 'do_preserve_contained_on_delete': do_preserve_contained_on_delete_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, role_fq_name_old: str, contained_role_fq_name_old: str, do_preserve_contained_on_delete_old: bool = None) -> list:
-		if not (isinstance(role_fq_name_old, str)):
-			raise ValueError(f"'role_fq_name' of incorrect type. Expected str, got {type(role_fq_name_old)}")
-		if not (isinstance(contained_role_fq_name_old, str)):
-			raise ValueError(f"'contained_role_fq_name' of incorrect type. Expected str, got {type(contained_role_fq_name_old)}")
-		if do_preserve_contained_on_delete_old is not None and not (isinstance(do_preserve_contained_on_delete_old, bool)):
-			raise ValueError(f"'do_preserve_contained_on_delete' of incorrect type. Expected bool, got {type(do_preserve_contained_on_delete_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(role_fq_name_old=role_fq_name_old, contained_role_fq_name_old=contained_role_fq_name_old, do_preserve_contained_on_delete_old=do_preserve_contained_on_delete_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_list_old is not None and not (isinstance(contained_role_fq_name_list_old, list)):
-			raise ValueError(f"'contained_role_fq_name_list' of incorrect type. Expected list, got {type(contained_role_fq_name_list_old)}")
-
-		return {'name': 'cntl.role2role.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'role_fq_name_list': role_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'contained_role_fq_name_list': contained_role_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, role_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, contained_role_fq_name_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if role_fq_name_list_old is not None and not (isinstance(role_fq_name_list_old, list)):
-			raise ValueError(f"'role_fq_name_list' of incorrect type. Expected list, got {type(role_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if contained_role_fq_name_list_old is not None and not (isinstance(contained_role_fq_name_list_old, list)):
-			raise ValueError(f"'contained_role_fq_name_list' of incorrect type. Expected list, got {type(contained_role_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, role_fq_name_list_old=role_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, contained_role_fq_name_list_old=contained_role_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GlobalPk2obj(APIObject):
-	gpk: str
-	object_dict: dict
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.object_dict, dict):
-			raise ValueError(f"'object_dict' of incorrect type. Expected dict, got {type(self.object_dict)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		return {'name': 'cntl.global_pk2obj.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'do_only_unqpr_object_attrs': do_only_unqpr_object_attrs_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, do_only_unqpr_object_attrs_old: bool = False) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if do_only_unqpr_object_attrs_old is not None and not (isinstance(do_only_unqpr_object_attrs_old, bool)):
-			raise ValueError(f"'do_only_unqpr_object_attrs' of incorrect type. Expected bool, got {type(do_only_unqpr_object_attrs_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, do_only_unqpr_object_attrs_old=do_only_unqpr_object_attrs_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Constraint2error(APIObject):
-	gpk: str
-	sqlstate: str
-	error_code: int
-	constraint_name: str
-	error_type_code: int
-	constraint_table: str
-	parent_key_not_found: bool
-	constraint_is_api_level: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.sqlstate, str):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(self.sqlstate)}")
-		if not isinstance(self.error_code, int):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(self.error_code)}")
-		if not isinstance(self.constraint_name, str):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(self.constraint_name)}")
-		if not isinstance(self.error_type_code, int):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(self.error_type_code)}")
-		if not isinstance(self.constraint_table, str):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(self.constraint_table)}")
-		if self.parent_key_not_found is not None and not isinstance(self.parent_key_not_found, bool):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(self.parent_key_not_found)}")
-		if not isinstance(self.constraint_is_api_level, bool):
-			raise ValueError(f"'constraint_is_api_level' of incorrect type. Expected bool, got {type(self.constraint_is_api_level)}")
-
-	@staticmethod
-	def create_ta(sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		return {'name': 'cntl.constraint2error.create', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, sqlstate_new: str, error_code_new: int, constraint_name_new: str, error_type_code_new: int, constraint_table_new: Union[str, ExplicitNull], parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> dict:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str) -> list:
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, error_code_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, constraint_name_list_old: list = None, error_type_code_list_old: list = None, parent_key_not_found_old: bool = None, constraint_table_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if error_code_list_old is not None and not (isinstance(error_code_list_old, list)):
-			raise ValueError(f"'error_code_list' of incorrect type. Expected list, got {type(error_code_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if constraint_name_list_old is not None and not (isinstance(constraint_name_list_old, list)):
-			raise ValueError(f"'constraint_name_list' of incorrect type. Expected list, got {type(constraint_name_list_old)}")
-		if error_type_code_list_old is not None and not (isinstance(error_type_code_list_old, list)):
-			raise ValueError(f"'error_type_code_list' of incorrect type. Expected list, got {type(error_type_code_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-		if constraint_table_list_old is not None and not (isinstance(constraint_table_list_old, list)):
-			raise ValueError(f"'constraint_table_list' of incorrect type. Expected list, got {type(constraint_table_list_old)}")
-
-		return {'name': 'cntl.constraint2error.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'sqlstate': sqlstate_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'error_code_list': error_code_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'constraint_name_list': constraint_name_list_old, 'error_type_code_list': error_type_code_list_old, 'parent_key_not_found': parent_key_not_found_old, 'constraint_table_list': constraint_table_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, sqlstate_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, error_code_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, constraint_name_list_old: list = None, error_type_code_list_old: list = None, parent_key_not_found_old: bool = None, constraint_table_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sqlstate_old is not None and not (isinstance(sqlstate_old, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if error_code_list_old is not None and not (isinstance(error_code_list_old, list)):
-			raise ValueError(f"'error_code_list' of incorrect type. Expected list, got {type(error_code_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if constraint_name_list_old is not None and not (isinstance(constraint_name_list_old, list)):
-			raise ValueError(f"'constraint_name_list' of incorrect type. Expected list, got {type(constraint_name_list_old)}")
-		if error_type_code_list_old is not None and not (isinstance(error_type_code_list_old, list)):
-			raise ValueError(f"'error_type_code_list' of incorrect type. Expected list, got {type(error_type_code_list_old)}")
-		if parent_key_not_found_old is not None and not (isinstance(parent_key_not_found_old, bool)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_old)}")
-		if constraint_table_list_old is not None and not (isinstance(constraint_table_list_old, list)):
-			raise ValueError(f"'constraint_table_list' of incorrect type. Expected list, got {type(constraint_table_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, sqlstate_old=sqlstate_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, error_code_list_old=error_code_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, constraint_name_list_old=constraint_name_list_old, error_type_code_list_old=error_type_code_list_old, parent_key_not_found_old=parent_key_not_found_old, constraint_table_list_old=constraint_table_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> dict:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		return {'name': 'cntl.constraint2error.update', 'new': _denullify_dict({'sqlstate': sqlstate_new, 'error_code': error_code_new, 'constraint_name': constraint_name_new, 'error_type_code': error_type_code_new, 'constraint_table': constraint_table_new, 'parent_key_not_found': parent_key_not_found_new}), 'old': _denullify_dict({'error_code': error_code_old, 'constraint_name': constraint_name_old, 'error_type_code': error_type_code_old, 'constraint_table': constraint_table_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, error_code_old: int, constraint_name_old: str, error_type_code_old: int, constraint_table_old: str, sqlstate_new: str = None, error_code_new: int = None, constraint_name_new: str = None, error_type_code_new: int = None, constraint_table_new: Union[str, ExplicitNull] = None, parent_key_not_found_new: Union[bool, ExplicitNull] = None) -> list:
-		if sqlstate_new is not None and not (isinstance(sqlstate_new, str)):
-			raise ValueError(f"'sqlstate' of incorrect type. Expected str, got {type(sqlstate_new)}")
-		if error_code_new is not None and not (isinstance(error_code_new, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_new)}")
-		if constraint_name_new is not None and not (isinstance(constraint_name_new, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_new)}")
-		if error_type_code_new is not None and not (isinstance(error_type_code_new, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_new)}")
-		if constraint_table_new is not None and not (isinstance(constraint_table_new, str) or isinstance(constraint_table_new, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_new)}")
-		if parent_key_not_found_new is not None and not (isinstance(parent_key_not_found_new, bool) or isinstance(parent_key_not_found_new, ExplicitNull)):
-			raise ValueError(f"'parent_key_not_found' of incorrect type. Expected bool, got {type(parent_key_not_found_new)}")
-		if not (isinstance(error_code_old, int)):
-			raise ValueError(f"'error_code' of incorrect type. Expected int, got {type(error_code_old)}")
-		if not (isinstance(constraint_name_old, str)):
-			raise ValueError(f"'constraint_name' of incorrect type. Expected str, got {type(constraint_name_old)}")
-		if not (isinstance(error_type_code_old, int)):
-			raise ValueError(f"'error_type_code' of incorrect type. Expected int, got {type(error_type_code_old)}")
-		if not (isinstance(constraint_table_old, str) or isinstance(constraint_table_old, ExplicitNull)):
-			raise ValueError(f"'constraint_table' of incorrect type. Expected str, got {type(constraint_table_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(sqlstate_new=sqlstate_new, error_code_new=error_code_new, constraint_name_new=constraint_name_new, error_type_code_new=error_type_code_new, constraint_table_new=constraint_table_new, parent_key_not_found_new=parent_key_not_found_new, error_code_old=error_code_old, constraint_name_old=constraint_name_old, error_type_code_old=error_type_code_old, constraint_table_old=constraint_table_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataType(APIObject):
-	pk: int
-	gpk: str
-	name: str
-	base_name: str
-	base_nspc: str
-	json_name: str
-	is_primary: bool
-	text_length: int
-	pg_type_name: str
-	pg_type_nspc: str
-	operator_list: list
-	format_literal: str
-	conv_daty_val_attname: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.base_name, str):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(self.base_name)}")
-		if self.base_nspc is not None and not isinstance(self.base_nspc, str):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(self.base_nspc)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.pg_type_name, str):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(self.pg_type_name)}")
-		if not isinstance(self.pg_type_nspc, str):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(self.pg_type_nspc)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-		if not isinstance(self.conv_daty_val_attname, str):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(self.conv_daty_val_attname)}")
-
-	@staticmethod
-	def create_ta(name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		return {'name': 'cntl.data_type.create', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, base_name_new: str, json_name_new: str, is_primary_new: bool, pg_type_name_new: str, pg_type_nspc_new: str, conv_daty_val_attname_new: str, pk_new: int = None, base_nspc_new: Union[str, ExplicitNull] = None, text_length_new: Union[int, ExplicitNull] = None, format_literal_new: Union[str, ExplicitNull] = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(pk_old: int) -> dict:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, pk_old: int) -> list:
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(pk_old: int = None, gpk_list_old: list = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'pk': pk_old, 'gpk_list': gpk_list_old, 'json_name': json_name_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, pk_old: int = None, gpk_list_old: list = None, json_name_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if pk_old is not None and not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(pk_old=pk_old, gpk_list_old=gpk_list_old, json_name_old=json_name_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> dict:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		return {'name': 'cntl.data_type.update', 'new': _denullify_dict({'pk': pk_new, 'name': name_new, 'base_name': base_name_new, 'base_nspc': base_nspc_new, 'json_name': json_name_new, 'is_primary': is_primary_new, 'text_length': text_length_new, 'pg_type_name': pg_type_name_new, 'pg_type_nspc': pg_type_nspc_new, 'format_literal': format_literal_new, 'conv_daty_val_attname': conv_daty_val_attname_new}), 'old': _denullify_dict({'pk': pk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, pk_old: int, pk_new: int = None, name_new: str = None, base_name_new: str = None, base_nspc_new: Union[str, ExplicitNull] = None, json_name_new: str = None, is_primary_new: bool = None, text_length_new: Union[int, ExplicitNull] = None, pg_type_name_new: str = None, pg_type_nspc_new: str = None, format_literal_new: Union[str, ExplicitNull] = None, conv_daty_val_attname_new: str = None) -> list:
-		if pk_new is not None and not (isinstance(pk_new, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if base_name_new is not None and not (isinstance(base_name_new, str)):
-			raise ValueError(f"'base_name' of incorrect type. Expected str, got {type(base_name_new)}")
-		if base_nspc_new is not None and not (isinstance(base_nspc_new, str) or isinstance(base_nspc_new, ExplicitNull)):
-			raise ValueError(f"'base_nspc' of incorrect type. Expected str, got {type(base_nspc_new)}")
-		if json_name_new is not None and not (isinstance(json_name_new, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if text_length_new is not None and not (isinstance(text_length_new, int) or isinstance(text_length_new, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_new)}")
-		if pg_type_name_new is not None and not (isinstance(pg_type_name_new, str)):
-			raise ValueError(f"'pg_type_name' of incorrect type. Expected str, got {type(pg_type_name_new)}")
-		if pg_type_nspc_new is not None and not (isinstance(pg_type_nspc_new, str)):
-			raise ValueError(f"'pg_type_nspc' of incorrect type. Expected str, got {type(pg_type_nspc_new)}")
-		if format_literal_new is not None and not (isinstance(format_literal_new, str) or isinstance(format_literal_new, ExplicitNull)):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(format_literal_new)}")
-		if conv_daty_val_attname_new is not None and not (isinstance(conv_daty_val_attname_new, str)):
-			raise ValueError(f"'conv_daty_val_attname' of incorrect type. Expected str, got {type(conv_daty_val_attname_new)}")
-		if not (isinstance(pk_old, int)):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(pk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(pk_new=pk_new, name_new=name_new, base_name_new=base_name_new, base_nspc_new=base_nspc_new, json_name_new=json_name_new, is_primary_new=is_primary_new, text_length_new=text_length_new, pg_type_name_new=pg_type_name_new, pg_type_nspc_new=pg_type_nspc_new, format_literal_new=format_literal_new, conv_daty_val_attname_new=conv_daty_val_attname_new, pk_old=pk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ColumnKvtab(APIObject):
-	gpk: str
-	key: str
-	position: int
-	table_name: str
-	column_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key, str):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(self.key)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.table_name, str):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(self.table_name)}")
-		if not isinstance(self.column_name, str):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(self.column_name)}")
-
-	@staticmethod
-	def create_ta(key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		return {'name': 'cntl.column_kvtab.create', 'new': _denullify_dict({'key': key_new, 'position': position_new, 'table_name': table_name_new, 'column_name': column_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_new: str, table_name_new: str, column_name_new: str, position_new: Union[int, ExplicitNull] = None) -> list:
-		if not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(table_name_new, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_new)}")
-		if not (isinstance(column_name_new, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_new=key_new, position_new=position_new, table_name_new=table_name_new, column_name_new=column_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_old: str, table_name_old: str, column_name_old: str) -> dict:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str) -> list:
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, key_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, table_name_list_old: list = None, column_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_list_old is not None and not (isinstance(key_list_old, list)):
-			raise ValueError(f"'key_list' of incorrect type. Expected list, got {type(key_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if column_name_list_old is not None and not (isinstance(column_name_list_old, list)):
-			raise ValueError(f"'column_name_list' of incorrect type. Expected list, got {type(column_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.column_kvtab.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'key_list': key_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'table_name_list': table_name_list_old, 'column_name_list': column_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, key_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, table_name_list_old: list = None, column_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if key_list_old is not None and not (isinstance(key_list_old, list)):
-			raise ValueError(f"'key_list' of incorrect type. Expected list, got {type(key_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if table_name_list_old is not None and not (isinstance(table_name_list_old, list)):
-			raise ValueError(f"'table_name_list' of incorrect type. Expected list, got {type(table_name_list_old)}")
-		if column_name_list_old is not None and not (isinstance(column_name_list_old, list)):
-			raise ValueError(f"'column_name_list' of incorrect type. Expected list, got {type(column_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, key_list_old=key_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, table_name_list_old=table_name_list_old, column_name_list_old=column_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> dict:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		return {'name': 'cntl.column_kvtab.update', 'new': _denullify_dict({'key': key_new, 'position': position_new}), 'old': _denullify_dict({'key': key_old, 'table_name': table_name_old, 'column_name': column_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_old: str, table_name_old: str, column_name_old: str, key_new: str = None, position_new: Union[int, ExplicitNull] = None) -> list:
-		if key_new is not None and not (isinstance(key_new, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_new)}")
-		if position_new is not None and not (isinstance(position_new, int) or isinstance(position_new, ExplicitNull)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(key_old, str)):
-			raise ValueError(f"'key' of incorrect type. Expected str, got {type(key_old)}")
-		if not (isinstance(table_name_old, str)):
-			raise ValueError(f"'table_name' of incorrect type. Expected str, got {type(table_name_old)}")
-		if not (isinstance(column_name_old, str)):
-			raise ValueError(f"'column_name' of incorrect type. Expected str, got {type(column_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_new=key_new, position_new=position_new, key_old=key_old, table_name_old=table_name_old, column_name_old=column_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class WapiAuth(APIObject):
-	gpk: str
-	type: str
-	token: str
-	is_own: bool
-	is_expired: bool
-	login_name: str
-	delete_date: str
-	description: str
-	expiration_date: str
-	last_login_date: str
-	last_generate_date: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.token, str):
-			raise ValueError(f"'token' of incorrect type. Expected str, got {type(self.token)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.login_name, str):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(self.login_name)}")
-		if not isinstance(self.delete_date, str):
-			raise ValueError(f"'delete_date' of incorrect type. Expected str, got {type(self.delete_date)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.expiration_date is not None and not isinstance(self.expiration_date, str):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(self.expiration_date)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if not isinstance(self.last_generate_date, str):
-			raise ValueError(f"'last_generate_date' of incorrect type. Expected str, got {type(self.last_generate_date)}")
-
-	@staticmethod
-	def create_ta(login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		return {'name': 'cntl.wapi_auth.create', 'new': _denullify_dict({'login_name': login_name_new, 'description': description_new, 'expiration_date': expiration_date_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, login_name_new: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(login_name_new, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(login_name_new=login_name_new, description_new=description_new, expiration_date_new=expiration_date_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.wapi_auth.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'is_expired': is_expired_old, 'login_name': login_name_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, login_name_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if login_name_old is not None and not (isinstance(login_name_old, str)):
-			raise ValueError(f"'login_name' of incorrect type. Expected str, got {type(login_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, is_expired_old=is_expired_old, login_name_old=login_name_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.wapi_auth.update', 'new': _denullify_dict({'description': description_new, 'expiration_date': expiration_date_new, 'do_refresh_token': do_refresh_token_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, description_new: Union[str, ExplicitNull] = None, expiration_date_new: Union[str, ExplicitNull] = None, do_refresh_token_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if expiration_date_new is not None and not (isinstance(expiration_date_new, str) or isinstance(expiration_date_new, ExplicitNull)):
-			raise ValueError(f"'expiration_date' of incorrect type. Expected str, got {type(expiration_date_new)}")
-		if do_refresh_token_new is not None and not (isinstance(do_refresh_token_new, bool)):
-			raise ValueError(f"'do_refresh_token' of incorrect type. Expected bool, got {type(do_refresh_token_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, expiration_date_new=expiration_date_new, do_refresh_token_new=do_refresh_token_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2group(APIObject):
-	gpk: str
-	is_own: bool
-	group_name: str
-	mgr_login_name: str
-	parent_group_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-		if self.parent_mgr_login_name is not None and not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def create_ta(group_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2group.create', 'new': _denullify_dict({'group_name': group_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, group_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(group_name_new=group_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(group_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'group_name': group_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, group_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(group_name_old=group_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Group(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_sub: bool
-	sub_id: str
-	is_admin: bool
-	description: str
-	do_idm_sync: bool
-	parent_name: str
-	ou_short_name: str
-	idm_description: str
-	idm_sync_last_ts: str
-	idm_sync_is_active: bool
-	idm_sync_last_state: str
-	idm_sync_max_mgr_count: int
-	content_is_rw_accessible: bool
-	idm_sync_last_successful_ts: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if self.sub_id is not None and not isinstance(self.sub_id, str):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(self.sub_id)}")
-		if not isinstance(self.is_admin, bool):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(self.is_admin)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.do_idm_sync, bool):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(self.do_idm_sync)}")
-		if not isinstance(self.parent_name, str):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(self.parent_name)}")
-		if self.ou_short_name is not None and not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if self.idm_description is not None and not isinstance(self.idm_description, str):
-			raise ValueError(f"'idm_description' of incorrect type. Expected str, got {type(self.idm_description)}")
-		if self.idm_sync_last_ts is not None and not isinstance(self.idm_sync_last_ts, str):
-			raise ValueError(f"'idm_sync_last_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_ts)}")
-		if not isinstance(self.idm_sync_is_active, bool):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(self.idm_sync_is_active)}")
-		if self.idm_sync_last_state is not None and not isinstance(self.idm_sync_last_state, str):
-			raise ValueError(f"'idm_sync_last_state' of incorrect type. Expected str, got {type(self.idm_sync_last_state)}")
-		if not isinstance(self.idm_sync_max_mgr_count, int):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(self.idm_sync_max_mgr_count)}")
-		if not isinstance(self.content_is_rw_accessible, bool):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(self.content_is_rw_accessible)}")
-		if self.idm_sync_last_successful_ts is not None and not isinstance(self.idm_sync_last_successful_ts, str):
-			raise ValueError(f"'idm_sync_last_successful_ts' of incorrect type. Expected str, got {type(self.idm_sync_last_successful_ts)}")
-
-	@staticmethod
-	def create_ta(name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20, content_is_rw_accessible_new: bool = True) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if content_is_rw_accessible_new is not None and not (isinstance(content_is_rw_accessible_new, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_new)}")
-
-		return {'name': 'cntl.group.create', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'parent_name': parent_name_new, 'ou_short_name': ou_short_name_new, 'do_copy_assignments': do_copy_assignments_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new, 'content_is_rw_accessible': content_is_rw_accessible_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = False, parent_name_new: str = None, ou_short_name_new: str = None, do_copy_assignments_new: bool = True, do_refresh_idm_sync_new: bool = False, idm_sync_max_mgr_count_new: int = 20, content_is_rw_accessible_new: bool = True) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if parent_name_new is not None and not (isinstance(parent_name_new, str)):
-			raise ValueError(f"'parent_name' of incorrect type. Expected str, got {type(parent_name_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_copy_assignments_new is not None and not (isinstance(do_copy_assignments_new, bool)):
-			raise ValueError(f"'do_copy_assignments' of incorrect type. Expected bool, got {type(do_copy_assignments_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if content_is_rw_accessible_new is not None and not (isinstance(content_is_rw_accessible_new, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, parent_name_new=parent_name_new, ou_short_name_new=ou_short_name_new, do_copy_assignments_new=do_copy_assignments_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, content_is_rw_accessible_new=content_is_rw_accessible_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, gpk_list_old: list = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None, content_is_rw_accessible_old: bool = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if content_is_rw_accessible_old is not None and not (isinstance(content_is_rw_accessible_old, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_old)}")
-
-		return {'name': 'cntl.group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'is_sub': is_sub_old, 'sub_id': sub_id_old, 'gpk_list': gpk_list_old, 'is_admin': is_admin_old, 'name_list': name_list_old, 'do_idm_sync': do_idm_sync_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'sub_id_list': sub_id_list_old, 'fetch_offset': fetch_offset_old, 'ou_short_name': ou_short_name_old, 'sub_id_regexp': sub_id_regexp_old, 'parent_name_list': parent_name_list_old, 'filter_params_dict': filter_params_dict_old, 'idm_sync_is_active': idm_sync_is_active_old, 'is_admin_or_is_own': is_admin_or_is_own_old, 'sorting_params_list': sorting_params_list_old, 'content_is_rw_accessible': content_is_rw_accessible_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, is_sub_old: bool = None, sub_id_old: str = None, gpk_list_old: list = None, is_admin_old: bool = None, name_list_old: list = None, do_idm_sync_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, sub_id_list_old: list = None, fetch_offset_old: int = None, ou_short_name_old: str = None, sub_id_regexp_old: str = None, parent_name_list_old: list = None, filter_params_dict_old: dict = None, idm_sync_is_active_old: bool = None, is_admin_or_is_own_old: bool = None, sorting_params_list_old: list = None, content_is_rw_accessible_old: bool = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if sub_id_old is not None and not (isinstance(sub_id_old, str) or isinstance(sub_id_old, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_admin_old is not None and not (isinstance(is_admin_old, bool)):
-			raise ValueError(f"'is_admin' of incorrect type. Expected bool, got {type(is_admin_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if do_idm_sync_old is not None and not (isinstance(do_idm_sync_old, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if sub_id_list_old is not None and not (isinstance(sub_id_list_old, list)):
-			raise ValueError(f"'sub_id_list' of incorrect type. Expected list, got {type(sub_id_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ou_short_name_old is not None and not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if sub_id_regexp_old is not None and not (isinstance(sub_id_regexp_old, str)):
-			raise ValueError(f"'sub_id_regexp' of incorrect type. Expected str, got {type(sub_id_regexp_old)}")
-		if parent_name_list_old is not None and not (isinstance(parent_name_list_old, list)):
-			raise ValueError(f"'parent_name_list' of incorrect type. Expected list, got {type(parent_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if idm_sync_is_active_old is not None and not (isinstance(idm_sync_is_active_old, bool)):
-			raise ValueError(f"'idm_sync_is_active' of incorrect type. Expected bool, got {type(idm_sync_is_active_old)}")
-		if is_admin_or_is_own_old is not None and not (isinstance(is_admin_or_is_own_old, bool)):
-			raise ValueError(f"'is_admin_or_is_own' of incorrect type. Expected bool, got {type(is_admin_or_is_own_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if content_is_rw_accessible_old is not None and not (isinstance(content_is_rw_accessible_old, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, is_sub_old=is_sub_old, sub_id_old=sub_id_old, gpk_list_old=gpk_list_old, is_admin_old=is_admin_old, name_list_old=name_list_old, do_idm_sync_old=do_idm_sync_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, sub_id_list_old=sub_id_list_old, fetch_offset_old=fetch_offset_old, ou_short_name_old=ou_short_name_old, sub_id_regexp_old=sub_id_regexp_old, parent_name_list_old=parent_name_list_old, filter_params_dict_old=filter_params_dict_old, idm_sync_is_active_old=idm_sync_is_active_old, is_admin_or_is_own_old=is_admin_or_is_own_old, sorting_params_list_old=sorting_params_list_old, content_is_rw_accessible_old=content_is_rw_accessible_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None, content_is_rw_accessible_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if content_is_rw_accessible_new is not None and not (isinstance(content_is_rw_accessible_new, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'cntl.group.update', 'new': _denullify_dict({'name': name_new, 'sub_id': sub_id_new, 'description': description_new, 'do_idm_sync': do_idm_sync_new, 'ou_short_name': ou_short_name_new, 'do_refresh_idm_sync': do_refresh_idm_sync_new, 'idm_sync_max_mgr_count': idm_sync_max_mgr_count_new, 'content_is_rw_accessible': content_is_rw_accessible_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, sub_id_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, do_idm_sync_new: bool = None, ou_short_name_new: str = None, do_refresh_idm_sync_new: bool = None, idm_sync_max_mgr_count_new: int = None, content_is_rw_accessible_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if sub_id_new is not None and not (isinstance(sub_id_new, str) or isinstance(sub_id_new, ExplicitNull)):
-			raise ValueError(f"'sub_id' of incorrect type. Expected str, got {type(sub_id_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_idm_sync_new is not None and not (isinstance(do_idm_sync_new, bool)):
-			raise ValueError(f"'do_idm_sync' of incorrect type. Expected bool, got {type(do_idm_sync_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if do_refresh_idm_sync_new is not None and not (isinstance(do_refresh_idm_sync_new, bool)):
-			raise ValueError(f"'do_refresh_idm_sync' of incorrect type. Expected bool, got {type(do_refresh_idm_sync_new)}")
-		if idm_sync_max_mgr_count_new is not None and not (isinstance(idm_sync_max_mgr_count_new, int)):
-			raise ValueError(f"'idm_sync_max_mgr_count' of incorrect type. Expected int, got {type(idm_sync_max_mgr_count_new)}")
-		if content_is_rw_accessible_new is not None and not (isinstance(content_is_rw_accessible_new, bool)):
-			raise ValueError(f"'content_is_rw_accessible' of incorrect type. Expected bool, got {type(content_is_rw_accessible_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, sub_id_new=sub_id_new, description_new=description_new, do_idm_sync_new=do_idm_sync_new, ou_short_name_new=ou_short_name_new, do_refresh_idm_sync_new=do_refresh_idm_sync_new, idm_sync_max_mgr_count_new=idm_sync_max_mgr_count_new, content_is_rw_accessible_new=content_is_rw_accessible_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Mgr2ou(APIObject):
-	gpk: str
-	is_own: bool
-	is_sub: bool
-	ou_short_name: str
-	mgr_login_name: str
-	parent_ou_short_name: str
-	parent_mgr_login_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_sub, bool):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(self.is_sub)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-		if not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.parent_ou_short_name, str):
-			raise ValueError(f"'parent_ou_short_name' of incorrect type. Expected str, got {type(self.parent_ou_short_name)}")
-		if not isinstance(self.parent_mgr_login_name, str):
-			raise ValueError(f"'parent_mgr_login_name' of incorrect type. Expected str, got {type(self.parent_mgr_login_name)}")
-
-	@staticmethod
-	def create_ta(ou_short_name_new: str, mgr_login_name_new: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		return {'name': 'cntl.mgr2ou.create', 'new': _denullify_dict({'ou_short_name': ou_short_name_new, 'mgr_login_name': mgr_login_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ou_short_name_new: str, mgr_login_name_new: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(mgr_login_name_new, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ou_short_name_new=ou_short_name_new, mgr_login_name_new=mgr_login_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, is_sub_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.mgr2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'is_sub': is_sub_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'mgr_login_name_list': mgr_login_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, is_sub_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, mgr_login_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_sub_old is not None and not (isinstance(is_sub_old, bool)):
-			raise ValueError(f"'is_sub' of incorrect type. Expected bool, got {type(is_sub_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if mgr_login_name_list_old is not None and not (isinstance(mgr_login_name_list_old, list)):
-			raise ValueError(f"'mgr_login_name_list' of incorrect type. Expected list, got {type(mgr_login_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, is_sub_old=is_sub_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, mgr_login_name_list_old=mgr_login_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> dict:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		return {'name': 'cntl.mgr2ou.update', 'new': _denullify_dict({'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'ou_short_name': ou_short_name_old, 'mgr_login_name': mgr_login_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ou_short_name_new: str, ou_short_name_old: str, mgr_login_name_old: str) -> list:
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-		if not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ou_short_name_new=ou_short_name_new, ou_short_name_old=ou_short_name_old, mgr_login_name_old=mgr_login_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrDef(APIObject):
-	gpk: str
-	key_word: str
-	data_type: str
-	object_type_fq_name: str
-	ins_trg_func_fq_name: str
-	upd_trg_func_fq_name: str
-	ref_object_type_fq_name: str
-	object_type_ref_attribute_name: str
-	object_type_api_ref_constraint_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if self.ins_trg_func_fq_name is not None and not isinstance(self.ins_trg_func_fq_name, str):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(self.ins_trg_func_fq_name)}")
-		if self.upd_trg_func_fq_name is not None and not isinstance(self.upd_trg_func_fq_name, str):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(self.upd_trg_func_fq_name)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-		if not isinstance(self.object_type_ref_attribute_name, str):
-			raise ValueError(f"'object_type_ref_attribute_name' of incorrect type. Expected str, got {type(self.object_type_ref_attribute_name)}")
-		if not isinstance(self.object_type_api_ref_constraint_name, str):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(self.object_type_api_ref_constraint_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_api_ref_constraint_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-
-		return {'name': 'cntl.ot_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_api_ref_constraint_name': object_type_api_ref_constraint_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, data_type_new: str, object_type_fq_name_new: str, ref_object_type_fq_name_new: str, object_type_api_ref_constraint_name_new: str, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_api_ref_constraint_name_new=object_type_api_ref_constraint_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		return {'name': 'cntl.ot_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'key_word_list': key_word_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old, 'object_type_fq_name_list': object_type_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, key_word_list_old=key_word_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old, object_type_fq_name_list_old=object_type_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_api_ref_constraint_name_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_api_ref_constraint_name_new is not None and not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new, 'data_type': data_type_new, 'object_type_fq_name': object_type_fq_name_new, 'ins_trg_func_fq_name': ins_trg_func_fq_name_new, 'upd_trg_func_fq_name': upd_trg_func_fq_name_new, 'ref_object_type_fq_name': ref_object_type_fq_name_new, 'object_type_api_ref_constraint_name': object_type_api_ref_constraint_name_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None, data_type_new: str = None, object_type_fq_name_new: str = None, ins_trg_func_fq_name_new: Union[str, ExplicitNull] = None, upd_trg_func_fq_name_new: Union[str, ExplicitNull] = None, ref_object_type_fq_name_new: str = None, object_type_api_ref_constraint_name_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ins_trg_func_fq_name_new is not None and not (isinstance(ins_trg_func_fq_name_new, str) or isinstance(ins_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'ins_trg_func_fq_name' of incorrect type. Expected str, got {type(ins_trg_func_fq_name_new)}")
-		if upd_trg_func_fq_name_new is not None and not (isinstance(upd_trg_func_fq_name_new, str) or isinstance(upd_trg_func_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'upd_trg_func_fq_name' of incorrect type. Expected str, got {type(upd_trg_func_fq_name_new)}")
-		if ref_object_type_fq_name_new is not None and not (isinstance(ref_object_type_fq_name_new, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_new)}")
-		if object_type_api_ref_constraint_name_new is not None and not (isinstance(object_type_api_ref_constraint_name_new, str)):
-			raise ValueError(f"'object_type_api_ref_constraint_name' of incorrect type. Expected str, got {type(object_type_api_ref_constraint_name_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, data_type_new=data_type_new, object_type_fq_name_new=object_type_fq_name_new, ins_trg_func_fq_name_new=ins_trg_func_fq_name_new, upd_trg_func_fq_name_new=upd_trg_func_fq_name_new, ref_object_type_fq_name_new=ref_object_type_fq_name_new, object_type_api_ref_constraint_name_new=object_type_api_ref_constraint_name_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrKey(APIObject):
-	gpk: str
-	set_mode: int
-	display_mode: int
-	default_value: str
-	val_is_unique: bool
-	ref_object_gfk: str
-	val_is_nullable: bool
-	display_position: int
-	permission_fq_name: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-	ref_object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.set_mode, int):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(self.set_mode)}")
-		if not isinstance(self.display_mode, int):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(self.display_mode)}")
-		if self.default_value is not None and not isinstance(self.default_value, str):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(self.default_value)}")
-		if not isinstance(self.val_is_unique, bool):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(self.val_is_unique)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.val_is_nullable, bool):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(self.val_is_nullable)}")
-		if not isinstance(self.display_position, int):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(self.display_position)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-		if not isinstance(self.ref_object_type_fq_name, str):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(self.ref_object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		return {'name': 'cntl.ot_attr_key.create', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, display_position_new: int, object_type_fq_name_new: str, ot_attr_def_key_word_new: str, set_mode_new: int = 0, display_mode_new: int = 0, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = False, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> dict:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, ref_object_gfk_old: str = None) -> list:
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ref_object_gfk_list_old: list = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None, ot_attr_def_key_word_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ref_object_gfk_list_old is not None and not (isinstance(ref_object_gfk_list_old, list)):
-			raise ValueError(f"'ref_object_gfk_list' of incorrect type. Expected list, got {type(ref_object_gfk_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_attr_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'ref_object_gfk_list': ref_object_gfk_list_old, 'sorting_params_list': sorting_params_list_old, 'ref_object_type_fq_name': ref_object_type_fq_name_old, 'object_type_fq_name_list': object_type_fq_name_list_old, 'ot_attr_def_key_word_list': ot_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ref_object_gfk_list_old: list = None, sorting_params_list_old: list = None, ref_object_type_fq_name_old: str = None, object_type_fq_name_list_old: list = None, ot_attr_def_key_word_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ref_object_gfk_list_old is not None and not (isinstance(ref_object_gfk_list_old, list)):
-			raise ValueError(f"'ref_object_gfk_list' of incorrect type. Expected list, got {type(ref_object_gfk_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ref_object_type_fq_name_old is not None and not (isinstance(ref_object_type_fq_name_old, str)):
-			raise ValueError(f"'ref_object_type_fq_name' of incorrect type. Expected str, got {type(ref_object_type_fq_name_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, ref_object_gfk_list_old=ref_object_gfk_list_old, sorting_params_list_old=sorting_params_list_old, ref_object_type_fq_name_old=ref_object_type_fq_name_old, object_type_fq_name_list_old=object_type_fq_name_list_old, ot_attr_def_key_word_list_old=ot_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> dict:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_key.update', 'new': _denullify_dict({'set_mode': set_mode_new, 'display_mode': display_mode_new, 'default_value': default_value_new, 'val_is_unique': val_is_unique_new, 'ref_object_gfk': ref_object_gfk_new, 'val_is_nullable': val_is_nullable_new, 'display_position': display_position_new, 'permission_fq_name': permission_fq_name_new, 'object_type_fq_name': object_type_fq_name_new, 'ot_attr_def_key_word': ot_attr_def_key_word_new}), 'old': _denullify_dict({'ref_object_gfk': ref_object_gfk_old, 'object_type_fq_name': object_type_fq_name_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_type_fq_name_old: str, ot_attr_def_key_word_old: str, set_mode_new: int = None, display_mode_new: int = None, default_value_new: Union[str, ExplicitNull] = None, val_is_unique_new: bool = None, ref_object_gfk_new: Union[str, ExplicitNull] = None, val_is_nullable_new: bool = None, display_position_new: int = None, permission_fq_name_new: Union[str, ExplicitNull] = None, object_type_fq_name_new: str = None, ot_attr_def_key_word_new: str = None, ref_object_gfk_old: str = None) -> list:
-		if set_mode_new is not None and not (isinstance(set_mode_new, int)):
-			raise ValueError(f"'set_mode' of incorrect type. Expected int, got {type(set_mode_new)}")
-		if display_mode_new is not None and not (isinstance(display_mode_new, int)):
-			raise ValueError(f"'display_mode' of incorrect type. Expected int, got {type(display_mode_new)}")
-		if default_value_new is not None and not (isinstance(default_value_new, str) or isinstance(default_value_new, ExplicitNull)):
-			raise ValueError(f"'default_value' of incorrect type. Expected str, got {type(default_value_new)}")
-		if val_is_unique_new is not None and not (isinstance(val_is_unique_new, bool)):
-			raise ValueError(f"'val_is_unique' of incorrect type. Expected bool, got {type(val_is_unique_new)}")
-		if ref_object_gfk_new is not None and not (isinstance(ref_object_gfk_new, str) or isinstance(ref_object_gfk_new, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_new)}")
-		if val_is_nullable_new is not None and not (isinstance(val_is_nullable_new, bool)):
-			raise ValueError(f"'val_is_nullable' of incorrect type. Expected bool, got {type(val_is_nullable_new)}")
-		if display_position_new is not None and not (isinstance(display_position_new, int)):
-			raise ValueError(f"'display_position' of incorrect type. Expected int, got {type(display_position_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-		if ot_attr_def_key_word_new is not None and not (isinstance(ot_attr_def_key_word_new, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_new)}")
-		if ref_object_gfk_old is not None and not (isinstance(ref_object_gfk_old, str) or isinstance(ref_object_gfk_old, ExplicitNull)):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(ref_object_gfk_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(set_mode_new=set_mode_new, display_mode_new=display_mode_new, default_value_new=default_value_new, val_is_unique_new=val_is_unique_new, ref_object_gfk_new=ref_object_gfk_new, val_is_nullable_new=val_is_nullable_new, display_position_new=display_position_new, permission_fq_name_new=permission_fq_name_new, object_type_fq_name_new=object_type_fq_name_new, ot_attr_def_key_word_new=ot_attr_def_key_word_new, ref_object_gfk_old=ref_object_gfk_old, object_type_fq_name_old=object_type_fq_name_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtAttrVal(APIObject):
-	value: str
-	data_type: str
-	object_gfk: str
-	ref_object_gfk: str
-	object_type_fq_name: str
-	ot_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if self.ref_object_gfk is not None and not isinstance(self.ref_object_gfk, str):
-			raise ValueError(f"'ref_object_gfk' of incorrect type. Expected str, got {type(self.ref_object_gfk)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_attr_def_key_word, str):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_attr_def_key_word)}")
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = 'eq', filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'value_range': value_range_old, 'fetch_offset': fetch_offset_old, 'value_operator': value_operator_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old, 'ot_attr_def_key_word_list': ot_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, value_range_old: str = None, fetch_offset_old: int = None, value_operator_old: str = 'eq', filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, ot_attr_def_key_word_old: str = None, ot_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if value_range_old is not None and not (isinstance(value_range_old, str)):
-			raise ValueError(f"'value_range' of incorrect type. Expected str, got {type(value_range_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if value_operator_old is not None and not (isinstance(value_operator_old, str)):
-			raise ValueError(f"'value_operator' of incorrect type. Expected str, got {type(value_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if ot_attr_def_key_word_old is not None and not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-		if ot_attr_def_key_word_list_old is not None and not (isinstance(ot_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, value_range_old=value_range_old, fetch_offset_old=fetch_offset_old, value_operator_old=value_operator_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old, ot_attr_def_key_word_list_old=ot_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_new: Union[str, ExplicitNull], object_gfk_old: str, ot_attr_def_key_word_old: str) -> dict:
-		if not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_attr_val.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'object_gfk': object_gfk_old, 'ot_attr_def_key_word': ot_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_new: Union[str, ExplicitNull], object_gfk_old: str, ot_attr_def_key_word_old: str) -> list:
-		if not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(ot_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_attr_def_key_word' of incorrect type. Expected str, got {type(ot_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, object_gfk_old=object_gfk_old, ot_attr_def_key_word_old=ot_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Replication(APIObject):
-	gpk: str
-	name: str
-	oper_mode: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.oper_mode, str):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(self.oper_mode)}")
-
-	@staticmethod
-	def create_ta(name_new: str, oper_mode_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		return {'name': 'cntl.replication.create', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, oper_mode_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, oper_mode_new=oper_mode_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str, oper_mode_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str, oper_mode_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.replication.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'oper_mode': oper_mode_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, oper_mode_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if oper_mode_old is not None and not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, oper_mode_old=oper_mode_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		return {'name': 'cntl.replication.update', 'new': _denullify_dict({'name': name_new, 'oper_mode': oper_mode_new}), 'old': _denullify_dict({'name': name_old, 'oper_mode': oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, oper_mode_old: str, name_new: str = None, oper_mode_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if oper_mode_new is not None and not (isinstance(oper_mode_new, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if not (isinstance(oper_mode_old, str)):
-			raise ValueError(f"'oper_mode' of incorrect type. Expected str, got {type(oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, oper_mode_new=oper_mode_new, name_old=name_old, oper_mode_old=oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ReplicationPub2sub(APIObject):
-	gpk: str
-	do_init: bool
-	publisher_fqdn: str
-	subscriber_fqdn: str
-	replication_name: str
-	replication_oper_mode: str
-	replication_slot_suffix: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.do_init, bool):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(self.do_init)}")
-		if not isinstance(self.publisher_fqdn, str):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(self.publisher_fqdn)}")
-		if not isinstance(self.subscriber_fqdn, str):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(self.subscriber_fqdn)}")
-		if not isinstance(self.replication_name, str):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(self.replication_name)}")
-		if not isinstance(self.replication_oper_mode, str):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(self.replication_oper_mode)}")
-		if not isinstance(self.replication_slot_suffix, str):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(self.replication_slot_suffix)}")
-
-	@staticmethod
-	def create_ta(publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		return {'name': 'cntl.replication_pub2sub.create', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, publisher_fqdn_new: str, subscriber_fqdn_new: str, replication_name_new: str, replication_oper_mode_new: str, replication_slot_suffix_new: str, do_init_new: bool = True) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(do_init_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, publisher_fqdn_list_old: list = None, sorting_params_list_old: list = None, subscriber_fqdn_list_old: list = None, replication_name_list_old: list = None, replication_oper_mode_old: str = None) -> dict:
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if publisher_fqdn_list_old is not None and not (isinstance(publisher_fqdn_list_old, list)):
-			raise ValueError(f"'publisher_fqdn_list' of incorrect type. Expected list, got {type(publisher_fqdn_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if subscriber_fqdn_list_old is not None and not (isinstance(subscriber_fqdn_list_old, list)):
-			raise ValueError(f"'subscriber_fqdn_list' of incorrect type. Expected list, got {type(subscriber_fqdn_list_old)}")
-		if replication_name_list_old is not None and not (isinstance(replication_name_list_old, list)):
-			raise ValueError(f"'replication_name_list' of incorrect type. Expected list, got {type(replication_name_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'do_init': do_init_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'publisher_fqdn_list': publisher_fqdn_list_old, 'sorting_params_list': sorting_params_list_old, 'subscriber_fqdn_list': subscriber_fqdn_list_old, 'replication_name_list': replication_name_list_old, 'replication_oper_mode': replication_oper_mode_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, do_init_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, publisher_fqdn_list_old: list = None, sorting_params_list_old: list = None, subscriber_fqdn_list_old: list = None, replication_name_list_old: list = None, replication_oper_mode_old: str = None) -> list:
-		if do_init_old is not None and not (isinstance(do_init_old, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if publisher_fqdn_list_old is not None and not (isinstance(publisher_fqdn_list_old, list)):
-			raise ValueError(f"'publisher_fqdn_list' of incorrect type. Expected list, got {type(publisher_fqdn_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if subscriber_fqdn_list_old is not None and not (isinstance(subscriber_fqdn_list_old, list)):
-			raise ValueError(f"'subscriber_fqdn_list' of incorrect type. Expected list, got {type(subscriber_fqdn_list_old)}")
-		if replication_name_list_old is not None and not (isinstance(replication_name_list_old, list)):
-			raise ValueError(f"'replication_name_list' of incorrect type. Expected list, got {type(replication_name_list_old)}")
-		if replication_oper_mode_old is not None and not (isinstance(replication_oper_mode_old, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(do_init_old=do_init_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, publisher_fqdn_list_old=publisher_fqdn_list_old, sorting_params_list_old=sorting_params_list_old, subscriber_fqdn_list_old=subscriber_fqdn_list_old, replication_name_list_old=replication_name_list_old, replication_oper_mode_old=replication_oper_mode_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> dict:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'cntl.replication_pub2sub.update', 'new': _denullify_dict({'do_init': do_init_new, 'publisher_fqdn': publisher_fqdn_new, 'subscriber_fqdn': subscriber_fqdn_new, 'replication_name': replication_name_new, 'do_init_is_recursive': do_init_is_recursive_new, 'replication_oper_mode': replication_oper_mode_new, 'replication_slot_suffix': replication_slot_suffix_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, do_init_new: bool = None, publisher_fqdn_new: str = None, subscriber_fqdn_new: str = None, replication_name_new: str = None, do_init_is_recursive_new: bool = False, replication_oper_mode_new: str = None, replication_slot_suffix_new: str = None) -> list:
-		if do_init_new is not None and not (isinstance(do_init_new, bool)):
-			raise ValueError(f"'do_init' of incorrect type. Expected bool, got {type(do_init_new)}")
-		if publisher_fqdn_new is not None and not (isinstance(publisher_fqdn_new, str)):
-			raise ValueError(f"'publisher_fqdn' of incorrect type. Expected str, got {type(publisher_fqdn_new)}")
-		if subscriber_fqdn_new is not None and not (isinstance(subscriber_fqdn_new, str)):
-			raise ValueError(f"'subscriber_fqdn' of incorrect type. Expected str, got {type(subscriber_fqdn_new)}")
-		if replication_name_new is not None and not (isinstance(replication_name_new, str)):
-			raise ValueError(f"'replication_name' of incorrect type. Expected str, got {type(replication_name_new)}")
-		if do_init_is_recursive_new is not None and not (isinstance(do_init_is_recursive_new, bool)):
-			raise ValueError(f"'do_init_is_recursive' of incorrect type. Expected bool, got {type(do_init_is_recursive_new)}")
-		if replication_oper_mode_new is not None and not (isinstance(replication_oper_mode_new, str)):
-			raise ValueError(f"'replication_oper_mode' of incorrect type. Expected str, got {type(replication_oper_mode_new)}")
-		if replication_slot_suffix_new is not None and not (isinstance(replication_slot_suffix_new, str)):
-			raise ValueError(f"'replication_slot_suffix' of incorrect type. Expected str, got {type(replication_slot_suffix_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(do_init_new=do_init_new, publisher_fqdn_new=publisher_fqdn_new, subscriber_fqdn_new=subscriber_fqdn_new, replication_name_new=replication_name_new, do_init_is_recursive_new=do_init_is_recursive_new, replication_oper_mode_new=replication_oper_mode_new, replication_slot_suffix_new=replication_slot_suffix_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	gpk: str
-	name: str
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'data_type': data_type_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, data_type_old: str = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, data_type_old=data_type_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	gpk: str
-	tag: str
-	name: str
-	is_active: bool
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def create_ta(tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> dict:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		return {'name': 'cntl.language.create', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, tag_new: str, name_new: str, is_active_new: bool = False, is_default_new: bool = False) -> list:
-		if not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(tag_old: str) -> dict:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, tag_old: str) -> list:
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, tag_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'cntl.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'tag_list': tag_list_old, 'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, tag_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, tag_list_old=tag_list_old, is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> dict:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		return {'name': 'cntl.language.update', 'new': _denullify_dict({'tag': tag_new, 'name': name_new, 'is_active': is_active_new, 'is_default': is_default_new}), 'old': _denullify_dict({'tag': tag_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, tag_old: str, tag_new: str = None, name_new: str = None, is_active_new: bool = None, is_default_new: bool = None) -> list:
-		if tag_new is not None and not (isinstance(tag_new, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_default_new is not None and not (isinstance(is_default_new, bool)):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(is_default_new)}")
-		if not (isinstance(tag_old, str)):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(tag_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(tag_new=tag_new, name_new=name_new, is_active_new=is_active_new, is_default_new=is_default_new, tag_old=tag_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrDef(APIObject):
-	gpk: str
-	key_word: str
-	is_static: bool
-	is_primary: bool
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-		if not isinstance(self.is_static, bool):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(self.is_static)}")
-		if not isinstance(self.is_primary, bool):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(self.is_primary)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> dict:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.create', 'new': _denullify_dict({'key_word': key_word_new, 'is_static': is_static_new, 'is_primary': is_primary_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, key_word_new: str, object_type_fq_name_new: str, is_static_new: bool = False, is_primary_new: bool = False) -> list:
-		if not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if is_static_new is not None and not (isinstance(is_static_new, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_new)}")
-		if is_primary_new is not None and not (isinstance(is_primary_new, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_new)}")
-		if not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(key_word_new=key_word_new, is_static_new=is_static_new, is_primary_new=is_primary_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(key_word_old: str, object_type_fq_name_old: str) -> dict:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str) -> list:
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, object_type_fq_name_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'is_static': is_static_old, 'is_primary': is_primary_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'key_word_list': key_word_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'object_type_fq_name_list': object_type_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, is_static_old: bool = None, is_primary_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, key_word_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, object_type_fq_name_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_static_old is not None and not (isinstance(is_static_old, bool)):
-			raise ValueError(f"'is_static' of incorrect type. Expected bool, got {type(is_static_old)}")
-		if is_primary_old is not None and not (isinstance(is_primary_old, bool)):
-			raise ValueError(f"'is_primary' of incorrect type. Expected bool, got {type(is_primary_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if key_word_list_old is not None and not (isinstance(key_word_list_old, list)):
-			raise ValueError(f"'key_word_list' of incorrect type. Expected list, got {type(key_word_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if object_type_fq_name_list_old is not None and not (isinstance(object_type_fq_name_list_old, list)):
-			raise ValueError(f"'object_type_fq_name_list' of incorrect type. Expected list, got {type(object_type_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, is_static_old=is_static_old, is_primary_old=is_primary_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, key_word_list_old=key_word_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, object_type_fq_name_list_old=object_type_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> dict:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_def.update', 'new': _denullify_dict({'key_word': key_word_new}), 'old': _denullify_dict({'key_word': key_word_old, 'object_type_fq_name': object_type_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, key_word_old: str, object_type_fq_name_old: str, key_word_new: str = None) -> list:
-		if key_word_new is not None and not (isinstance(key_word_new, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_new)}")
-		if not (isinstance(key_word_old, str)):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(key_word_old)}")
-		if not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(key_word_new=key_word_new, key_word_old=key_word_old, object_type_fq_name_old=object_type_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class OtLangAttrVal(APIObject):
-	value: str
-	object_gfk: str
-	language_tag: str
-	object_type_fq_name: str
-	ot_lang_attr_def_key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-		if not isinstance(self.ot_lang_attr_def_key_word, str):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(self.ot_lang_attr_def_key_word)}")
-
-	@staticmethod
-	def list_ta(value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> dict:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'object_gfk': object_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_tag': language_tag_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'use_transaction_language': use_transaction_language_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old, 'ot_lang_attr_def_key_word_list': ot_lang_attr_def_key_word_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, value_old: str = None, object_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_tag_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, use_transaction_language_old: bool = False, ot_lang_attr_def_key_word_old: str = None, ot_lang_attr_def_key_word_list_old: list = None) -> list:
-		if value_old is not None and not (isinstance(value_old, str) or isinstance(value_old, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if use_transaction_language_old is not None and not (isinstance(use_transaction_language_old, bool)):
-			raise ValueError(f"'use_transaction_language' of incorrect type. Expected bool, got {type(use_transaction_language_old)}")
-		if ot_lang_attr_def_key_word_old is not None and not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-		if ot_lang_attr_def_key_word_list_old is not None and not (isinstance(ot_lang_attr_def_key_word_list_old, list)):
-			raise ValueError(f"'ot_lang_attr_def_key_word_list' of incorrect type. Expected list, got {type(ot_lang_attr_def_key_word_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(value_old=value_old, object_gfk_old=object_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_tag_old=language_tag_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, use_transaction_language_old=use_transaction_language_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old, ot_lang_attr_def_key_word_list_old=ot_lang_attr_def_key_word_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		return {'name': 'cntl.ot_lang_attr_val.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'object_gfk': object_gfk_old, 'language_tag': language_tag_old, 'ot_lang_attr_def_key_word': ot_lang_attr_def_key_word_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, object_gfk_old: str, language_tag_old: str, ot_lang_attr_def_key_word_old: str, value_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str) or isinstance(value_new, ExplicitNull)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if not (isinstance(ot_lang_attr_def_key_word_old, str)):
-			raise ValueError(f"'ot_lang_attr_def_key_word' of incorrect type. Expected str, got {type(ot_lang_attr_def_key_word_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, object_gfk_old=object_gfk_old, language_tag_old=language_tag_old, ot_lang_attr_def_key_word_old=ot_lang_attr_def_key_word_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/dhcpcfg.py b/4.2/golang/dhcpcfg.py
deleted file mode 100644
index 782c4e6..0000000
--- a/4.2/golang/dhcpcfg.py
+++ /dev/null
@@ -1,277 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Operator(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dhcpcfg.operator.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpcfg.operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dhcpcfg.operator.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Dt2operator2dt(APIObject):
-	gpk: str
-	operator: str
-	left_data_type: str
-	right_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, left_data_type_new: str, right_data_type_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.create', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, left_data_type_new: str, right_data_type_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str) -> dict:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str) -> list:
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, operator_list_old: list = None, filter_params_dict_old: dict = None, left_data_type_list_old: list = None, sorting_params_list_old: list = None, right_data_type_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if operator_list_old is not None and not (isinstance(operator_list_old, list)):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(operator_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if left_data_type_list_old is not None and not (isinstance(left_data_type_list_old, list)):
-			raise ValueError(f"'left_data_type_list' of incorrect type. Expected list, got {type(left_data_type_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if right_data_type_list_old is not None and not (isinstance(right_data_type_list_old, list)):
-			raise ValueError(f"'right_data_type_list' of incorrect type. Expected list, got {type(right_data_type_list_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'operator_list': operator_list_old, 'filter_params_dict': filter_params_dict_old, 'left_data_type_list': left_data_type_list_old, 'sorting_params_list': sorting_params_list_old, 'right_data_type_list': right_data_type_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, operator_list_old: list = None, filter_params_dict_old: dict = None, left_data_type_list_old: list = None, sorting_params_list_old: list = None, right_data_type_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if operator_list_old is not None and not (isinstance(operator_list_old, list)):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(operator_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if left_data_type_list_old is not None and not (isinstance(left_data_type_list_old, list)):
-			raise ValueError(f"'left_data_type_list' of incorrect type. Expected list, got {type(left_data_type_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if right_data_type_list_old is not None and not (isinstance(right_data_type_list_old, list)):
-			raise ValueError(f"'right_data_type_list' of incorrect type. Expected list, got {type(right_data_type_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, operator_list_old=operator_list_old, filter_params_dict_old=filter_params_dict_old, left_data_type_list_old=left_data_type_list_old, sorting_params_list_old=sorting_params_list_old, right_data_type_list_old=right_data_type_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		return {'name': 'dhcpcfg.dt2operator2dt.update', 'new': _denullify_dict({'operator': operator_new, 'left_data_type': left_data_type_new, 'right_data_type': right_data_type_new}), 'old': _denullify_dict({'operator': operator_old, 'left_data_type': left_data_type_old, 'right_data_type': right_data_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, operator_old: str, left_data_type_old: str, right_data_type_old: str, operator_new: str = None, left_data_type_new: str = None, right_data_type_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if left_data_type_new is not None and not (isinstance(left_data_type_new, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(operator_old, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_old)}")
-		if not (isinstance(left_data_type_old, str)):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(left_data_type_old)}")
-		if not (isinstance(right_data_type_old, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, left_data_type_new=left_data_type_new, right_data_type_new=right_data_type_new, operator_old=operator_old, left_data_type_old=left_data_type_old, right_data_type_old=right_data_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/dhcpv4.py b/4.2/golang/dhcpv4.py
deleted file mode 100644
index e2a502f..0000000
--- a/4.2/golang/dhcpv4.py
+++ /dev/null
@@ -1,1362 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GlobalOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	name: str
-	data_type: str
-	reference: str
-	description: str
-	is_generated: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.data_type, str):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(self.data_type)}")
-		if self.reference is not None and not isinstance(self.reference, str):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(self.reference)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_generated, bool):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(self.is_generated)}")
-
-	@staticmethod
-	def create_ta(code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		return {'name': 'dhcpv4.global_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, name_new: str, data_type_new: str, data_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = False) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, code_list_old: list = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.global_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'code_list': code_list_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_generated': is_generated_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, code_list_old: list = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_generated_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_generated_old is not None and not (isinstance(is_generated_old, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, code_list_old=code_list_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_generated_old=is_generated_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.global_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'name': name_new, 'data_type': data_type_new, 'reference': reference_new, 'description': description_new, 'is_generated': is_generated_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, name_new: str = None, data_type_new: str = None, reference_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, is_generated_new: bool = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if data_type_new is not None and not (isinstance(data_type_new, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_new)}")
-		if reference_new is not None and not (isinstance(reference_new, str) or isinstance(reference_new, ExplicitNull)):
-			raise ValueError(f"'reference' of incorrect type. Expected str, got {type(reference_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_generated_new is not None and not (isinstance(is_generated_new, bool)):
-			raise ValueError(f"'is_generated' of incorrect type. Expected bool, got {type(is_generated_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, name_new=name_new, data_type_new=data_type_new, reference_new=reference_new, description_new=description_new, is_generated_new=is_generated_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Lease(APIObject):
-	gpk: str
-	is_own: bool
-	leasetime: str
-	fqdn_value: str
-	is_expired: bool
-	is_offered: bool
-	ts_expires: str
-	fqdn_is_dhcp: bool
-	ip_addr_value: str
-	ip_subnet_cidr: str
-	is_static_addr: bool
-	is_static_fqdn: bool
-	mac_addr_value: str
-	ip_addr_is_dhcp: bool
-	ts_last_changed: str
-	adm_status_descr: str
-	client_identifier: str
-	oper_status_descr: str
-	client_options_dict: dict
-	server_options_dict: dict
-	always_match_by_mac_addr: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.leasetime is not None and not isinstance(self.leasetime, str):
-			raise ValueError(f"'leasetime' of incorrect type. Expected str, got {type(self.leasetime)}")
-		if self.fqdn_value is not None and not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_expired, bool):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(self.is_expired)}")
-		if not isinstance(self.is_offered, bool):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(self.is_offered)}")
-		if not isinstance(self.ts_expires, str):
-			raise ValueError(f"'ts_expires' of incorrect type. Expected str, got {type(self.ts_expires)}")
-		if not isinstance(self.fqdn_is_dhcp, bool):
-			raise ValueError(f"'fqdn_is_dhcp' of incorrect type. Expected bool, got {type(self.fqdn_is_dhcp)}")
-		if self.ip_addr_value is not None and not isinstance(self.ip_addr_value, str):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(self.ip_addr_value)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-		if not isinstance(self.is_static_addr, bool):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(self.is_static_addr)}")
-		if not isinstance(self.is_static_fqdn, bool):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(self.is_static_fqdn)}")
-		if self.mac_addr_value is not None and not isinstance(self.mac_addr_value, str):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(self.mac_addr_value)}")
-		if not isinstance(self.ip_addr_is_dhcp, bool):
-			raise ValueError(f"'ip_addr_is_dhcp' of incorrect type. Expected bool, got {type(self.ip_addr_is_dhcp)}")
-		if not isinstance(self.ts_last_changed, str):
-			raise ValueError(f"'ts_last_changed' of incorrect type. Expected str, got {type(self.ts_last_changed)}")
-		if self.adm_status_descr is not None and not isinstance(self.adm_status_descr, str):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(self.adm_status_descr)}")
-		if self.client_identifier is not None and not isinstance(self.client_identifier, str):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(self.client_identifier)}")
-		if self.oper_status_descr is not None and not isinstance(self.oper_status_descr, str):
-			raise ValueError(f"'oper_status_descr' of incorrect type. Expected str, got {type(self.oper_status_descr)}")
-		if self.client_options_dict is not None and not isinstance(self.client_options_dict, dict):
-			raise ValueError(f"'client_options_dict' of incorrect type. Expected dict, got {type(self.client_options_dict)}")
-		if self.server_options_dict is not None and not isinstance(self.server_options_dict, dict):
-			raise ValueError(f"'server_options_dict' of incorrect type. Expected dict, got {type(self.server_options_dict)}")
-		if not isinstance(self.always_match_by_mac_addr, bool):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(self.always_match_by_mac_addr)}")
-
-	@staticmethod
-	def create_ta(leasetime_new: Union[str, ExplicitNull] = None, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, mac_addr_value_new: Union[str, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> dict:
-		if leasetime_new is not None and not (isinstance(leasetime_new, str) or isinstance(leasetime_new, ExplicitNull)):
-			raise ValueError(f"'leasetime' of incorrect type. Expected str, got {type(leasetime_new)}")
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		return {'name': 'dhcpv4.lease.create', 'new': _denullify_dict({'leasetime': leasetime_new, 'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'mac_addr_value': mac_addr_value_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, leasetime_new: Union[str, ExplicitNull] = None, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = True, mac_addr_value_new: Union[str, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, always_match_by_mac_addr_new: bool = False) -> list:
-		if leasetime_new is not None and not (isinstance(leasetime_new, str) or isinstance(leasetime_new, ExplicitNull)):
-			raise ValueError(f"'leasetime' of incorrect type. Expected str, got {type(leasetime_new)}")
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(leasetime_new=leasetime_new, fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, mac_addr_value_new=mac_addr_value_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'is_expired': is_expired_old, 'is_offered': is_offered_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ip_subnet_cidr': ip_subnet_cidr_old, 'is_static_addr': is_static_addr_old, 'is_static_fqdn': is_static_fqdn_old, 'mac_addr_value': mac_addr_value_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, is_expired_old: bool = None, is_offered_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ip_subnet_cidr_old: str = None, is_static_addr_old: bool = None, is_static_fqdn_old: bool = None, mac_addr_value_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_expired_old is not None and not (isinstance(is_expired_old, bool)):
-			raise ValueError(f"'is_expired' of incorrect type. Expected bool, got {type(is_expired_old)}")
-		if is_offered_old is not None and not (isinstance(is_offered_old, bool)):
-			raise ValueError(f"'is_offered' of incorrect type. Expected bool, got {type(is_offered_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_subnet_cidr_old is not None and not (isinstance(ip_subnet_cidr_old, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_old)}")
-		if is_static_addr_old is not None and not (isinstance(is_static_addr_old, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_old)}")
-		if is_static_fqdn_old is not None and not (isinstance(is_static_fqdn_old, bool)):
-			raise ValueError(f"'is_static_fqdn' of incorrect type. Expected bool, got {type(is_static_fqdn_old)}")
-		if mac_addr_value_old is not None and not (isinstance(mac_addr_value_old, str)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, is_expired_old=is_expired_old, is_offered_old=is_offered_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ip_subnet_cidr_old=ip_subnet_cidr_old, is_static_addr_old=is_static_addr_old, is_static_fqdn_old=is_static_fqdn_old, mac_addr_value_old=mac_addr_value_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, leasetime_new: Union[str, ExplicitNull] = None, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, mac_addr_value_new: Union[str, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> dict:
-		if leasetime_new is not None and not (isinstance(leasetime_new, str) or isinstance(leasetime_new, ExplicitNull)):
-			raise ValueError(f"'leasetime' of incorrect type. Expected str, got {type(leasetime_new)}")
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.lease.update', 'new': _denullify_dict({'leasetime': leasetime_new, 'fqdn_value': fqdn_value_new, 'ip_addr_value': ip_addr_value_new, 'ip_subnet_cidr': ip_subnet_cidr_new, 'is_static_addr': is_static_addr_new, 'mac_addr_value': mac_addr_value_new, 'adm_status_descr': adm_status_descr_new, 'client_identifier': client_identifier_new, 'always_match_by_mac_addr': always_match_by_mac_addr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, leasetime_new: Union[str, ExplicitNull] = None, fqdn_value_new: Union[str, ExplicitNull] = None, ip_addr_value_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None, is_static_addr_new: bool = None, mac_addr_value_new: Union[str, ExplicitNull] = None, adm_status_descr_new: Union[str, ExplicitNull] = None, client_identifier_new: Union[str, ExplicitNull] = None, always_match_by_mac_addr_new: bool = None) -> list:
-		if leasetime_new is not None and not (isinstance(leasetime_new, str) or isinstance(leasetime_new, ExplicitNull)):
-			raise ValueError(f"'leasetime' of incorrect type. Expected str, got {type(leasetime_new)}")
-		if fqdn_value_new is not None and not (isinstance(fqdn_value_new, str) or isinstance(fqdn_value_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if ip_addr_value_new is not None and not (isinstance(ip_addr_value_new, str) or isinstance(ip_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'ip_addr_value' of incorrect type. Expected str, got {type(ip_addr_value_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if is_static_addr_new is not None and not (isinstance(is_static_addr_new, bool)):
-			raise ValueError(f"'is_static_addr' of incorrect type. Expected bool, got {type(is_static_addr_new)}")
-		if mac_addr_value_new is not None and not (isinstance(mac_addr_value_new, str) or isinstance(mac_addr_value_new, ExplicitNull)):
-			raise ValueError(f"'mac_addr_value' of incorrect type. Expected str, got {type(mac_addr_value_new)}")
-		if adm_status_descr_new is not None and not (isinstance(adm_status_descr_new, str) or isinstance(adm_status_descr_new, ExplicitNull)):
-			raise ValueError(f"'adm_status_descr' of incorrect type. Expected str, got {type(adm_status_descr_new)}")
-		if client_identifier_new is not None and not (isinstance(client_identifier_new, str) or isinstance(client_identifier_new, ExplicitNull)):
-			raise ValueError(f"'client_identifier' of incorrect type. Expected str, got {type(client_identifier_new)}")
-		if always_match_by_mac_addr_new is not None and not (isinstance(always_match_by_mac_addr_new, bool)):
-			raise ValueError(f"'always_match_by_mac_addr' of incorrect type. Expected bool, got {type(always_match_by_mac_addr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(leasetime_new=leasetime_new, fqdn_value_new=fqdn_value_new, ip_addr_value_new=ip_addr_value_new, ip_subnet_cidr_new=ip_subnet_cidr_new, is_static_addr_new=is_static_addr_new, mac_addr_value_new=mac_addr_value_new, adm_status_descr_new=adm_status_descr_new, client_identifier_new=client_identifier_new, always_match_by_mac_addr_new=always_match_by_mac_addr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	priority: int
-	code_data_type: str
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.subnet_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, ip_subnet_cidr_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'priority_list': priority_list_old, 'filter_params_dict': filter_params_dict_old, 'ip_subnet_cidr_list': ip_subnet_cidr_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, priority_list_old=priority_list_old, filter_params_dict_old=filter_params_dict_old, ip_subnet_cidr_list_old=ip_subnet_cidr_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None, ip_subnet_cidr_new: str = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	ip_subnet_cidr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-
-	@staticmethod
-	def create_ta(name_new: str, ip_subnet_cidr_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		return {'name': 'dhcpv4.og.create', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, ip_subnet_cidr_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'ip_subnet_cidr_list': ip_subnet_cidr_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, ip_subnet_cidr_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ip_subnet_cidr_list_old is not None and not (isinstance(ip_subnet_cidr_list_old, list)):
-			raise ValueError(f"'ip_subnet_cidr_list' of incorrect type. Expected list, got {type(ip_subnet_cidr_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, ip_subnet_cidr_list_old=ip_subnet_cidr_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og.update', 'new': _denullify_dict({'name': name_new, 'ip_subnet_cidr': ip_subnet_cidr_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, name_new: str = None, ip_subnet_cidr_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if ip_subnet_cidr_new is not None and not (isinstance(ip_subnet_cidr_new, str)):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(ip_subnet_cidr_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, ip_subnet_cidr_new=ip_subnet_cidr_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOption(APIObject):
-	gpk: str
-	code: int
-	data: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	code_data_type: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.code, int):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(self.code)}")
-		if not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.code_data_type, str):
-			raise ValueError(f"'code_data_type' of incorrect type. Expected str, got {type(self.code_data_type)}")
-
-	@staticmethod
-	def create_ta(code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		return {'name': 'dhcpv4.group_option.create', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, code_new: int, data_new: str, og_gfk_new: str, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'code_list': code_list_old, 'fetch_limit': fetch_limit_old, 'og_gfk_list': og_gfk_list_old, 'fetch_offset': fetch_offset_old, 'priority_list': priority_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, code_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, priority_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if code_list_old is not None and not (isinstance(code_list_old, list)):
-			raise ValueError(f"'code_list' of incorrect type. Expected list, got {type(code_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if priority_list_old is not None and not (isinstance(priority_list_old, list)):
-			raise ValueError(f"'priority_list' of incorrect type. Expected list, got {type(priority_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, code_list_old=code_list_old, fetch_limit_old=fetch_limit_old, og_gfk_list_old=og_gfk_list_old, fetch_offset_old=fetch_offset_old, priority_list_old=priority_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> dict:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option.update', 'new': _denullify_dict({'code': code_new, 'data': data_new, 'og_gfk': og_gfk_new, 'next_gfk': next_gfk_new, 'prior_gfk': prior_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, code_new: int = None, data_new: str = None, og_gfk_new: str = None, next_gfk_new: Union[str, ExplicitNull] = None, prior_gfk_new: Union[str, ExplicitNull] = None) -> list:
-		if code_new is not None and not (isinstance(code_new, int)):
-			raise ValueError(f"'code' of incorrect type. Expected int, got {type(code_new)}")
-		if data_new is not None and not (isinstance(data_new, str)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if next_gfk_new is not None and not (isinstance(next_gfk_new, str) or isinstance(next_gfk_new, ExplicitNull)):
-			raise ValueError(f"'next_gfk' of incorrect type. Expected str, got {type(next_gfk_new)}")
-		if prior_gfk_new is not None and not (isinstance(prior_gfk_new, str) or isinstance(prior_gfk_new, ExplicitNull)):
-			raise ValueError(f"'prior_gfk' of incorrect type. Expected str, got {type(prior_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(code_new=code_new, data_new=data_new, og_gfk_new=og_gfk_new, next_gfk_new=next_gfk_new, prior_gfk_new=prior_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SubnetOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	sn_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.sn_opt_gfk, str):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(self.sn_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, sn_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'sn_opt_gfk': sn_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, sn_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sn_opt_gfk_old is not None and not (isinstance(sn_opt_gfk_old, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, sn_opt_gfk_old=sn_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.subnet_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'sn_opt_gfk': sn_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, sn_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if sn_opt_gfk_new is not None and not (isinstance(sn_opt_gfk_new, str)):
-			raise ValueError(f"'sn_opt_gfk' of incorrect type. Expected str, got {type(sn_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, sn_opt_gfk_new=sn_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GroupOptionRule(APIObject):
-	gpk: str
-	is_own: bool
-	operator: str
-	opt_code: int
-	og_opt_gfk: str
-	left_data_type: str
-	right_data_type: str
-	right_data_value: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.operator, str):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(self.operator)}")
-		if not isinstance(self.opt_code, int):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(self.opt_code)}")
-		if not isinstance(self.og_opt_gfk, str):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(self.og_opt_gfk)}")
-		if not isinstance(self.left_data_type, str):
-			raise ValueError(f"'left_data_type' of incorrect type. Expected str, got {type(self.left_data_type)}")
-		if not isinstance(self.right_data_type, str):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(self.right_data_type)}")
-		if not isinstance(self.right_data_value, str):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(self.right_data_value)}")
-
-	@staticmethod
-	def create_ta(operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> dict:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		return {'name': 'dhcpv4.group_option_rule.create', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, operator_new: str, opt_code_new: int, og_opt_gfk_new: str, right_data_type_new: str, right_data_value_new: str) -> list:
-		if not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'og_opt_gfk': og_opt_gfk_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, og_opt_gfk_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if og_opt_gfk_old is not None and not (isinstance(og_opt_gfk_old, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, og_opt_gfk_old=og_opt_gfk_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> dict:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.group_option_rule.update', 'new': _denullify_dict({'operator': operator_new, 'opt_code': opt_code_new, 'og_opt_gfk': og_opt_gfk_new, 'right_data_type': right_data_type_new, 'right_data_value': right_data_value_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, operator_new: str = None, opt_code_new: int = None, og_opt_gfk_new: str = None, right_data_type_new: str = None, right_data_value_new: str = None) -> list:
-		if operator_new is not None and not (isinstance(operator_new, str)):
-			raise ValueError(f"'operator' of incorrect type. Expected str, got {type(operator_new)}")
-		if opt_code_new is not None and not (isinstance(opt_code_new, int)):
-			raise ValueError(f"'opt_code' of incorrect type. Expected int, got {type(opt_code_new)}")
-		if og_opt_gfk_new is not None and not (isinstance(og_opt_gfk_new, str)):
-			raise ValueError(f"'og_opt_gfk' of incorrect type. Expected str, got {type(og_opt_gfk_new)}")
-		if right_data_type_new is not None and not (isinstance(right_data_type_new, str)):
-			raise ValueError(f"'right_data_type' of incorrect type. Expected str, got {type(right_data_type_new)}")
-		if right_data_value_new is not None and not (isinstance(right_data_value_new, str)):
-			raise ValueError(f"'right_data_value' of incorrect type. Expected str, got {type(right_data_value_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(operator_new=operator_new, opt_code_new=opt_code_new, og_opt_gfk_new=og_opt_gfk_new, right_data_type_new=right_data_type_new, right_data_value_new=right_data_value_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Og2lease(APIObject):
-	gpk: str
-	is_own: bool
-	og_gfk: str
-	priority: int
-	lease_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.og_gfk, str):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(self.og_gfk)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if not isinstance(self.lease_gfk, str):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(self.lease_gfk)}")
-
-	@staticmethod
-	def create_ta(og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> dict:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		return {'name': 'dhcpv4.og2lease.create', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, og_gfk_new: str, priority_new: int, lease_gfk_new: str) -> list:
-		if not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, lease_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if lease_gfk_list_old is not None and not (isinstance(lease_gfk_list_old, list)):
-			raise ValueError(f"'lease_gfk_list' of incorrect type. Expected list, got {type(lease_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dhcpv4.og2lease.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'og_gfk_list': og_gfk_list_old, 'fetch_offset': fetch_offset_old, 'lease_gfk_list': lease_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, og_gfk_list_old: list = None, fetch_offset_old: int = None, lease_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if og_gfk_list_old is not None and not (isinstance(og_gfk_list_old, list)):
-			raise ValueError(f"'og_gfk_list' of incorrect type. Expected list, got {type(og_gfk_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if lease_gfk_list_old is not None and not (isinstance(lease_gfk_list_old, list)):
-			raise ValueError(f"'lease_gfk_list' of incorrect type. Expected list, got {type(lease_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, og_gfk_list_old=og_gfk_list_old, fetch_offset_old=fetch_offset_old, lease_gfk_list_old=lease_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> dict:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dhcpv4.og2lease.update', 'new': _denullify_dict({'og_gfk': og_gfk_new, 'priority': priority_new, 'lease_gfk': lease_gfk_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, og_gfk_new: str = None, priority_new: int = None, lease_gfk_new: str = None) -> list:
-		if og_gfk_new is not None and not (isinstance(og_gfk_new, str)):
-			raise ValueError(f"'og_gfk' of incorrect type. Expected str, got {type(og_gfk_new)}")
-		if priority_new is not None and not (isinstance(priority_new, int)):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(priority_new)}")
-		if lease_gfk_new is not None and not (isinstance(lease_gfk_new, str)):
-			raise ValueError(f"'lease_gfk' of incorrect type. Expected str, got {type(lease_gfk_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(og_gfk_new=og_gfk_new, priority_new=priority_new, lease_gfk_new=lease_gfk_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/dns.py b/4.2/golang/dns.py
deleted file mode 100644
index 9083450..0000000
--- a/4.2/golang/dns.py
+++ /dev/null
@@ -1,1456 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Zone(APIObject):
-	gpk: str
-	fqdn: str
-	is_own: bool
-	is_apex: bool
-	nsec3_salt: str
-	description: str
-	ns_set_name: str
-	nsec3_itcount: int
-	dnssec_do_sign: bool
-	soa_data_retry: int
-	nsec3_hash_algo: int
-	soa_data_expire: int
-	soa_data_serial: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	dnssec_do_enforce: bool
-	dflt_ttl_rrt_dbext: int
-	dflt_ttl_rrt_dbint: int
-	soa_data_hostmaster: str
-	dnssec_ksk_rrs_are_published: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_apex, bool):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(self.is_apex)}")
-		if self.nsec3_salt is not None and not isinstance(self.nsec3_salt, str):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(self.nsec3_salt)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.ns_set_name is not None and not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.nsec3_itcount, int):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(self.nsec3_itcount)}")
-		if not isinstance(self.dnssec_do_sign, bool):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(self.dnssec_do_sign)}")
-		if self.soa_data_retry is not None and not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.nsec3_hash_algo, int):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(self.nsec3_hash_algo)}")
-		if self.soa_data_expire is not None and not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_serial, int):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(self.soa_data_serial)}")
-		if self.soa_data_minimum is not None and not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if self.soa_data_refresh is not None and not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.dnssec_do_enforce, bool):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(self.dnssec_do_enforce)}")
-		if not isinstance(self.dflt_ttl_rrt_dbext, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbext)}")
-		if not isinstance(self.dflt_ttl_rrt_dbint, int):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(self.dflt_ttl_rrt_dbint)}")
-		if self.soa_data_hostmaster is not None and not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.dnssec_ksk_rrs_are_published, bool):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(self.dnssec_ksk_rrs_are_published)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		return {'name': 'dns.zone.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = 0, dnssec_do_sign_new: bool = False, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = 1, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = False, dflt_ttl_rrt_dbext_new: int = 900, dflt_ttl_rrt_dbint_new: int = 600, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = False) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, is_apex_old: bool = None, gpk_list_old: list = None, sub_fqdn_old: str = None, fqdn_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sub_fqdn_old is not None and not (isinstance(sub_fqdn_old, str)):
-			raise ValueError(f"'sub_fqdn' of incorrect type. Expected str, got {type(sub_fqdn_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.zone.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'is_apex': is_apex_old, 'gpk_list': gpk_list_old, 'sub_fqdn': sub_fqdn_old, 'fqdn_list': fqdn_list_old, 'fetch_limit': fetch_limit_old, 'ns_set_name': ns_set_name_old, 'fetch_offset': fetch_offset_old, 'dnssec_do_enforce': dnssec_do_enforce_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, is_apex_old: bool = None, gpk_list_old: list = None, sub_fqdn_old: str = None, fqdn_list_old: list = None, fetch_limit_old: int = None, ns_set_name_old: str = None, fetch_offset_old: int = None, dnssec_do_enforce_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_apex_old is not None and not (isinstance(is_apex_old, bool)):
-			raise ValueError(f"'is_apex' of incorrect type. Expected bool, got {type(is_apex_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if sub_fqdn_old is not None and not (isinstance(sub_fqdn_old, str)):
-			raise ValueError(f"'sub_fqdn' of incorrect type. Expected str, got {type(sub_fqdn_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ns_set_name_old is not None and not (isinstance(ns_set_name_old, str) or isinstance(ns_set_name_old, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dnssec_do_enforce_old is not None and not (isinstance(dnssec_do_enforce_old, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, is_apex_old=is_apex_old, gpk_list_old=gpk_list_old, sub_fqdn_old=sub_fqdn_old, fqdn_list_old=fqdn_list_old, fetch_limit_old=fetch_limit_old, ns_set_name_old=ns_set_name_old, fetch_offset_old=fetch_offset_old, dnssec_do_enforce_old=dnssec_do_enforce_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> dict:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.zone.update', 'new': _denullify_dict({'nsec3_salt': nsec3_salt_new, 'description': description_new, 'ns_set_name': ns_set_name_new, 'nsec3_itcount': nsec3_itcount_new, 'reset_rr_ttls': reset_rr_ttls_new, 'dnssec_do_sign': dnssec_do_sign_new, 'soa_data_retry': soa_data_retry_new, 'nsec3_hash_algo': nsec3_hash_algo_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_serial': soa_data_serial_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'dnssec_do_enforce': dnssec_do_enforce_new, 'dflt_ttl_rrt_dbext': dflt_ttl_rrt_dbext_new, 'dflt_ttl_rrt_dbint': dflt_ttl_rrt_dbint_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'dnssec_ksk_rrs_are_published': dnssec_ksk_rrs_are_published_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nsec3_salt_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, ns_set_name_new: Union[str, ExplicitNull] = None, nsec3_itcount_new: int = None, reset_rr_ttls_new: bool = False, dnssec_do_sign_new: bool = None, soa_data_retry_new: Union[int, ExplicitNull] = None, nsec3_hash_algo_new: int = None, soa_data_expire_new: Union[int, ExplicitNull] = None, soa_data_serial_new: int = None, soa_data_minimum_new: Union[int, ExplicitNull] = None, soa_data_refresh_new: Union[int, ExplicitNull] = None, dnssec_do_enforce_new: bool = None, dflt_ttl_rrt_dbext_new: int = None, dflt_ttl_rrt_dbint_new: int = None, soa_data_hostmaster_new: Union[str, ExplicitNull] = None, dnssec_ksk_rrs_are_published_new: bool = None) -> list:
-		if nsec3_salt_new is not None and not (isinstance(nsec3_salt_new, str) or isinstance(nsec3_salt_new, ExplicitNull)):
-			raise ValueError(f"'nsec3_salt' of incorrect type. Expected str, got {type(nsec3_salt_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str) or isinstance(ns_set_name_new, ExplicitNull)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if nsec3_itcount_new is not None and not (isinstance(nsec3_itcount_new, int)):
-			raise ValueError(f"'nsec3_itcount' of incorrect type. Expected int, got {type(nsec3_itcount_new)}")
-		if reset_rr_ttls_new is not None and not (isinstance(reset_rr_ttls_new, bool)):
-			raise ValueError(f"'reset_rr_ttls' of incorrect type. Expected bool, got {type(reset_rr_ttls_new)}")
-		if dnssec_do_sign_new is not None and not (isinstance(dnssec_do_sign_new, bool)):
-			raise ValueError(f"'dnssec_do_sign' of incorrect type. Expected bool, got {type(dnssec_do_sign_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int) or isinstance(soa_data_retry_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if nsec3_hash_algo_new is not None and not (isinstance(nsec3_hash_algo_new, int)):
-			raise ValueError(f"'nsec3_hash_algo' of incorrect type. Expected int, got {type(nsec3_hash_algo_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int) or isinstance(soa_data_expire_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_serial_new is not None and not (isinstance(soa_data_serial_new, int)):
-			raise ValueError(f"'soa_data_serial' of incorrect type. Expected int, got {type(soa_data_serial_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int) or isinstance(soa_data_minimum_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int) or isinstance(soa_data_refresh_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if dnssec_do_enforce_new is not None and not (isinstance(dnssec_do_enforce_new, bool)):
-			raise ValueError(f"'dnssec_do_enforce' of incorrect type. Expected bool, got {type(dnssec_do_enforce_new)}")
-		if dflt_ttl_rrt_dbext_new is not None and not (isinstance(dflt_ttl_rrt_dbext_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbext' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbext_new)}")
-		if dflt_ttl_rrt_dbint_new is not None and not (isinstance(dflt_ttl_rrt_dbint_new, int)):
-			raise ValueError(f"'dflt_ttl_rrt_dbint' of incorrect type. Expected int, got {type(dflt_ttl_rrt_dbint_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str) or isinstance(soa_data_hostmaster_new, ExplicitNull)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if dnssec_ksk_rrs_are_published_new is not None and not (isinstance(dnssec_ksk_rrs_are_published_new, bool)):
-			raise ValueError(f"'dnssec_ksk_rrs_are_published' of incorrect type. Expected bool, got {type(dnssec_ksk_rrs_are_published_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nsec3_salt_new=nsec3_salt_new, description_new=description_new, ns_set_name_new=ns_set_name_new, nsec3_itcount_new=nsec3_itcount_new, reset_rr_ttls_new=reset_rr_ttls_new, dnssec_do_sign_new=dnssec_do_sign_new, soa_data_retry_new=soa_data_retry_new, nsec3_hash_algo_new=nsec3_hash_algo_new, soa_data_expire_new=soa_data_expire_new, soa_data_serial_new=soa_data_serial_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, dnssec_do_enforce_new=dnssec_do_enforce_new, dflt_ttl_rrt_dbext_new=dflt_ttl_rrt_dbext_new, dflt_ttl_rrt_dbint_new=dflt_ttl_rrt_dbint_new, soa_data_hostmaster_new=soa_data_hostmaster_new, dnssec_ksk_rrs_are_published_new=dnssec_ksk_rrs_are_published_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn(APIObject):
-	gpk: str
-	type: str
-	zone: str
-	label: str
-	value: str
-	is_own: bool
-	label_idna: str
-	parent_gfk: str
-	tree_level: int
-	value_idna: str
-	description: str
-	parent_value: str
-	type_is_dhcp: bool
-	type_is_host: bool
-	type_rad_type: int
-	type_is_wildcard: bool
-	hierarchy_gfk_list: list
-	type_is_nonterminal: bool
-	is_empty_nonterminal: bool
-	rr_chain_target_is_own: bool
-	rr_chain_target_subnet_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if self.label is not None and not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.label_idna is not None and not isinstance(self.label_idna, str):
-			raise ValueError(f"'label_idna' of incorrect type. Expected str, got {type(self.label_idna)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.value_idna, str):
-			raise ValueError(f"'value_idna' of incorrect type. Expected str, got {type(self.value_idna)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.parent_value is not None and not isinstance(self.parent_value, str):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(self.parent_value)}")
-		if not isinstance(self.type_is_dhcp, bool):
-			raise ValueError(f"'type_is_dhcp' of incorrect type. Expected bool, got {type(self.type_is_dhcp)}")
-		if not isinstance(self.type_is_host, bool):
-			raise ValueError(f"'type_is_host' of incorrect type. Expected bool, got {type(self.type_is_host)}")
-		if not isinstance(self.type_rad_type, int):
-			raise ValueError(f"'type_rad_type' of incorrect type. Expected int, got {type(self.type_rad_type)}")
-		if not isinstance(self.type_is_wildcard, bool):
-			raise ValueError(f"'type_is_wildcard' of incorrect type. Expected bool, got {type(self.type_is_wildcard)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if not isinstance(self.type_is_nonterminal, bool):
-			raise ValueError(f"'type_is_nonterminal' of incorrect type. Expected bool, got {type(self.type_is_nonterminal)}")
-		if not isinstance(self.is_empty_nonterminal, bool):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(self.is_empty_nonterminal)}")
-		if not isinstance(self.rr_chain_target_is_own, bool):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(self.rr_chain_target_is_own)}")
-		if self.rr_chain_target_subnet_gfk_list is not None and not isinstance(self.rr_chain_target_subnet_gfk_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_gfk_list)}")
-
-	@staticmethod
-	def create_ta(type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dns.fqdn.create', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, value_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, value_new=value_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.fqdn.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str, try_del_parent_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old, try_del_parent_old=try_del_parent_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, zone_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		return {'name': 'dns.fqdn.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'zone': zone_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'label_regexp': label_regexp_old, 'parent_value': parent_value_old, 'value_regexp': value_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_empty_nonterminal': is_empty_nonterminal_old, 'rr_chain_target_is_own': rr_chain_target_is_own_old, 'rr_chain_target_subnet_gfk_list': rr_chain_target_subnet_gfk_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, zone_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, label_regexp_old: str = None, parent_value_old: str = None, value_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_empty_nonterminal_old: bool = None, rr_chain_target_is_own_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if parent_value_old is not None and not (isinstance(parent_value_old, str)):
-			raise ValueError(f"'parent_value' of incorrect type. Expected str, got {type(parent_value_old)}")
-		if value_regexp_old is not None and not (isinstance(value_regexp_old, str)):
-			raise ValueError(f"'value_regexp' of incorrect type. Expected str, got {type(value_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_empty_nonterminal_old is not None and not (isinstance(is_empty_nonterminal_old, bool)):
-			raise ValueError(f"'is_empty_nonterminal' of incorrect type. Expected bool, got {type(is_empty_nonterminal_old)}")
-		if rr_chain_target_is_own_old is not None and not (isinstance(rr_chain_target_is_own_old, bool)):
-			raise ValueError(f"'rr_chain_target_is_own' of incorrect type. Expected bool, got {type(rr_chain_target_is_own_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, zone_old=zone_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, label_list_old=label_list_old, tree_level_old=tree_level_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, label_regexp_old=label_regexp_old, parent_value_old=parent_value_old, value_regexp_old=value_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_empty_nonterminal_old=is_empty_nonterminal_old, rr_chain_target_is_own_old=rr_chain_target_is_own_old, rr_chain_target_subnet_gfk_list_old=rr_chain_target_subnet_gfk_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		return {'name': 'dns.fqdn.update', 'new': _denullify_dict({'type': type_new, 'value': value_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old, 'try_del_parent': try_del_parent_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, type_new: str = None, value_new: str = None, description_new: Union[str, ExplicitNull] = None, try_del_parent_old: bool = True) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if try_del_parent_old is not None and not (isinstance(try_del_parent_old, bool)):
-			raise ValueError(f"'try_del_parent' of incorrect type. Expected bool, got {type(try_del_parent_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, value_new=value_new, description_new=description_new, value_old=value_old, try_del_parent_old=try_del_parent_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpAddr(APIObject):
-	gpk: str
-	cidr: str
-	type: str
-	value: str
-	is_own: bool
-	is_dhcp: bool
-	is_reserved: bool
-	is_rr_target: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_reserved, bool):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(self.is_reserved)}")
-		if not isinstance(self.is_rr_target, bool):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(self.is_rr_target)}")
-
-	@staticmethod
-	def bulk_create_ta(value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		return {'name': 'dns.ip_addr.bulk_create', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_stop': value_stop_new, 'is_reserved': is_reserved_new, 'value_start': value_start_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_create(cls, api_session: APISession, value_start_new: str, is_dhcp_new: bool = False, value_stop_new: str = None, is_reserved_new: bool = False) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_stop_new is not None and not (isinstance(value_stop_new, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if not (isinstance(value_start_new, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_create_ta(is_dhcp_new=is_dhcp_new, value_stop_new=value_stop_new, is_reserved_new=is_reserved_new, value_start_new=value_start_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_delete_ta(value_start_old: str, value_stop_old: str = None) -> dict:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_delete(cls, api_session: APISession, value_start_old: str, value_stop_old: str = None) -> list:
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_delete_ta(value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_update_ta(is_dhcp_new: bool = None, is_reserved_new: bool = None, value_stop_old: str = None, value_start_old: str = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		return {'name': 'dns.ip_addr.bulk_update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({'value_stop': value_stop_old, 'value_start': value_start_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_update(cls, api_session: APISession, is_dhcp_new: bool = None, is_reserved_new: bool = None, value_stop_old: str = None, value_start_old: str = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_stop_old is not None and not (isinstance(value_stop_old, str)):
-			raise ValueError(f"'value_stop' of incorrect type. Expected str, got {type(value_stop_old)}")
-		if value_start_old is not None and not (isinstance(value_start_old, str)):
-			raise ValueError(f"'value_start' of incorrect type. Expected str, got {type(value_start_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_update_ta(is_dhcp_new=is_dhcp_new, is_reserved_new=is_reserved_new, value_stop_old=value_stop_old, value_start_old=value_start_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def create_ta(value_new: str, is_dhcp_new: bool = False, is_reserved_new: bool = False) -> dict:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-
-		return {'name': 'dns.ip_addr.create', 'new': _denullify_dict({'value': value_new, 'is_dhcp': is_dhcp_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: str, is_dhcp_new: bool = False, is_reserved_new: bool = False) -> list:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, is_dhcp_new=is_dhcp_new, is_reserved_new=is_reserved_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'dns.ip_addr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, gpk_list_old: list = None, value_cidr_old: str = None, value_list_old: list = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.ip_addr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'gpk_list': gpk_list_old, 'value_cidr': value_cidr_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'is_reserved': is_reserved_old, 'fetch_offset': fetch_offset_old, 'is_rr_target': is_rr_target_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, is_own_old: bool = None, is_dhcp_old: bool = None, gpk_list_old: list = None, value_cidr_old: str = None, value_list_old: list = None, fetch_limit_old: int = None, is_reserved_old: bool = None, fetch_offset_old: int = None, is_rr_target_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_reserved_old is not None and not (isinstance(is_reserved_old, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_rr_target_old is not None and not (isinstance(is_rr_target_old, bool)):
-			raise ValueError(f"'is_rr_target' of incorrect type. Expected bool, got {type(is_rr_target_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, gpk_list_old=gpk_list_old, value_cidr_old=value_cidr_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, is_reserved_old=is_reserved_old, fetch_offset_old=fetch_offset_old, is_rr_target_old=is_rr_target_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_old: str = None, value_cidr_old: str = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-
-		return {'name': 'dns.ip_addr.update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'value_cidr': value_cidr_new, 'is_reserved': is_reserved_new}), 'old': _denullify_dict({'value': value_old, 'value_cidr': value_cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, is_dhcp_new: bool = None, value_cidr_new: str = None, is_reserved_new: bool = None, value_old: str = None, value_cidr_old: str = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if value_cidr_new is not None and not (isinstance(value_cidr_new, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_new)}")
-		if is_reserved_new is not None and not (isinstance(is_reserved_new, bool)):
-			raise ValueError(f"'is_reserved' of incorrect type. Expected bool, got {type(is_reserved_new)}")
-		if value_old is not None and not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-		if value_cidr_old is not None and not (isinstance(value_cidr_old, str)):
-			raise ValueError(f"'value_cidr' of incorrect type. Expected str, got {type(value_cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_dhcp_new=is_dhcp_new, value_cidr_new=value_cidr_new, is_reserved_new=is_reserved_new, value_old=value_old, value_cidr_old=value_cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	gpk: str
-	ttl: int
-	data: str
-	fqdn: str
-	type: str
-	zone: str
-	is_own: bool
-	is_auth: bool
-	fqdn_type: str
-	host_is_nws: bool
-	target_fqdn: str
-	target_ipaddr: str
-	ttl_reset_date: str
-	ttl_reset_days: int
-	fqdn_description: str
-	target_fqdn_type: str
-	ttl_zone_default: int
-	target_ipaddr_type: str
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-	rr_chain_target_subnet_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.zone, str):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(self.zone)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_auth, bool):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(self.is_auth)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.host_is_nws, bool):
-			raise ValueError(f"'host_is_nws' of incorrect type. Expected bool, got {type(self.host_is_nws)}")
-		if self.target_fqdn is not None and not isinstance(self.target_fqdn, str):
-			raise ValueError(f"'target_fqdn' of incorrect type. Expected str, got {type(self.target_fqdn)}")
-		if self.target_ipaddr is not None and not isinstance(self.target_ipaddr, str):
-			raise ValueError(f"'target_ipaddr' of incorrect type. Expected str, got {type(self.target_ipaddr)}")
-		if self.ttl_reset_date is not None and not isinstance(self.ttl_reset_date, str):
-			raise ValueError(f"'ttl_reset_date' of incorrect type. Expected str, got {type(self.ttl_reset_date)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.fqdn_description is not None and not isinstance(self.fqdn_description, str):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(self.fqdn_description)}")
-		if self.target_fqdn_type is not None and not isinstance(self.target_fqdn_type, str):
-			raise ValueError(f"'target_fqdn_type' of incorrect type. Expected str, got {type(self.target_fqdn_type)}")
-		if not isinstance(self.ttl_zone_default, int):
-			raise ValueError(f"'ttl_zone_default' of incorrect type. Expected int, got {type(self.ttl_zone_default)}")
-		if self.target_ipaddr_type is not None and not isinstance(self.target_ipaddr_type, str):
-			raise ValueError(f"'target_ipaddr_type' of incorrect type. Expected str, got {type(self.target_ipaddr_type)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-		if self.rr_chain_target_subnet_gfk_list is not None and not isinstance(self.rr_chain_target_subnet_gfk_list, list):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(self.rr_chain_target_subnet_gfk_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dns.record.create', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, type_new: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> dict:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		return {'name': 'dns.record.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old, 'force_del_ref_records': force_del_ref_records_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, try_del_fqdn_old: bool = True, force_del_ref_records_old: bool = False) -> list:
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-		if force_del_ref_records_old is not None and not (isinstance(force_del_ref_records_old, bool)):
-			raise ValueError(f"'force_del_ref_records' of incorrect type. Expected bool, got {type(force_del_ref_records_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old, force_del_ref_records_old=force_del_ref_records_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'dns.record.imp', 'new': _denullify_dict({'fqdn': fqdn_new, 'fqdn_type': fqdn_type_new, 'import_data': import_data_new, 'strict_mode': strict_mode_new, 'fqdn_description': fqdn_description_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, import_data_new: dict, fqdn_type_new: str = None, strict_mode_new: bool = True, fqdn_description_new: Union[str, ExplicitNull] = None, fqdn_old: str = None) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if fqdn_type_new is not None and not (isinstance(fqdn_type_new, str)):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(fqdn_type_new)}")
-		if not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if strict_mode_new is not None and not (isinstance(strict_mode_new, bool)):
-			raise ValueError(f"'strict_mode' of incorrect type. Expected bool, got {type(strict_mode_new)}")
-		if fqdn_description_new is not None and not (isinstance(fqdn_description_new, str) or isinstance(fqdn_description_new, ExplicitNull)):
-			raise ValueError(f"'fqdn_description' of incorrect type. Expected str, got {type(fqdn_description_new)}")
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(fqdn_new=fqdn_new, fqdn_type_new=fqdn_type_new, import_data_new=import_data_new, strict_mode_new=strict_mode_new, fqdn_description_new=fqdn_description_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, gpk_list_old: list = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> dict:
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		return {'name': 'dns.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'zone': zone_old, 'is_own': is_own_old, 'is_auth': is_auth_old, 'gpk_list': gpk_list_old, 'data_list': data_list_old, 'do_nn_ttl': do_nn_ttl_old, 'fqdn_list': fqdn_list_old, 'type_list': type_list_old, 'data_regexp': data_regexp_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'fqdn_label_list': fqdn_label_list_old, 'fqdn_label_regexp': fqdn_label_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'rr_chain_target_subnet_gfk_list': rr_chain_target_subnet_gfk_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, zone_old: str = None, is_own_old: bool = None, is_auth_old: bool = None, gpk_list_old: list = None, data_list_old: list = None, do_nn_ttl_old: bool = False, fqdn_list_old: list = None, type_list_old: list = None, data_regexp_old: str = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, fqdn_label_list_old: list = None, fqdn_label_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_is_reverse_unique_old: bool = None, rr_chain_target_subnet_gfk_list_old: list = None) -> list:
-		if zone_old is not None and not (isinstance(zone_old, str)):
-			raise ValueError(f"'zone' of incorrect type. Expected str, got {type(zone_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_auth_old is not None and not (isinstance(is_auth_old, bool)):
-			raise ValueError(f"'is_auth' of incorrect type. Expected bool, got {type(is_auth_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if data_list_old is not None and not (isinstance(data_list_old, list)):
-			raise ValueError(f"'data_list' of incorrect type. Expected list, got {type(data_list_old)}")
-		if do_nn_ttl_old is not None and not (isinstance(do_nn_ttl_old, bool)):
-			raise ValueError(f"'do_nn_ttl' of incorrect type. Expected bool, got {type(do_nn_ttl_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if data_regexp_old is not None and not (isinstance(data_regexp_old, str)):
-			raise ValueError(f"'data_regexp' of incorrect type. Expected str, got {type(data_regexp_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_label_list_old is not None and not (isinstance(fqdn_label_list_old, list)):
-			raise ValueError(f"'fqdn_label_list' of incorrect type. Expected list, got {type(fqdn_label_list_old)}")
-		if fqdn_label_regexp_old is not None and not (isinstance(fqdn_label_regexp_old, str)):
-			raise ValueError(f"'fqdn_label_regexp' of incorrect type. Expected str, got {type(fqdn_label_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if rr_chain_target_subnet_gfk_list_old is not None and not (isinstance(rr_chain_target_subnet_gfk_list_old, list) or isinstance(rr_chain_target_subnet_gfk_list_old, ExplicitNull)):
-			raise ValueError(f"'rr_chain_target_subnet_gfk_list' of incorrect type. Expected list, got {type(rr_chain_target_subnet_gfk_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(zone_old=zone_old, is_own_old=is_own_old, is_auth_old=is_auth_old, gpk_list_old=gpk_list_old, data_list_old=data_list_old, do_nn_ttl_old=do_nn_ttl_old, fqdn_list_old=fqdn_list_old, type_list_old=type_list_old, data_regexp_old=data_regexp_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, fqdn_label_list_old=fqdn_label_list_old, fqdn_label_regexp_old=fqdn_label_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_is_reverse_unique_old=target_is_reverse_unique_old, rr_chain_target_subnet_gfk_list_old=rr_chain_target_subnet_gfk_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> dict:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		return {'name': 'dns.record.update', 'new': _denullify_dict({'ttl': ttl_new, 'data': data_new, 'fqdn': fqdn_new, 'type': type_new, 'ttl_reset_days': ttl_reset_days_new, 'target_is_singleton': target_is_singleton_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'data': data_old, 'fqdn': fqdn_old, 'type': type_old, 'try_del_fqdn': try_del_fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, data_old: str, fqdn_old: str, type_old: str, ttl_new: Union[int, ExplicitNull] = None, data_new: Union[str, ExplicitNull] = None, fqdn_new: str = None, type_new: str = None, ttl_reset_days_new: int = None, target_is_singleton_new: bool = None, target_is_reverse_unique_new: bool = None, try_del_fqdn_old: bool = True) -> list:
-		if ttl_new is not None and not (isinstance(ttl_new, int) or isinstance(ttl_new, ExplicitNull)):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(ttl_new)}")
-		if data_new is not None and not (isinstance(data_new, str) or isinstance(data_new, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if ttl_reset_days_new is not None and not (isinstance(ttl_reset_days_new, int)):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(ttl_reset_days_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(data_old, str) or isinstance(data_old, ExplicitNull)):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(data_old)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if try_del_fqdn_old is not None and not (isinstance(try_del_fqdn_old, bool)):
-			raise ValueError(f"'try_del_fqdn' of incorrect type. Expected bool, got {type(try_del_fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ttl_new=ttl_new, data_new=data_new, fqdn_new=fqdn_new, type_new=type_new, ttl_reset_days_new=ttl_reset_days_new, target_is_singleton_new=target_is_singleton_new, target_is_reverse_unique_new=target_is_reverse_unique_new, data_old=data_old, fqdn_old=fqdn_old, type_old=type_old, try_del_fqdn_old=try_del_fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2group(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, group_name_new: str) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'dns.fqdn2group.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, group_name_new: str) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, group_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'dns.fqdn2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, group_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_value_list': fqdn_value_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_value_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_value_list_old=fqdn_value_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2ou(APIObject):
-	gpk: str
-	is_own: bool
-	fqdn_value: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'dns.fqdn2ou.create', 'new': _denullify_dict({'fqdn_value': fqdn_value_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_value_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(fqdn_value_new, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_value_new=fqdn_value_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_value_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, fqdn_value_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'fqdn_value_list': fqdn_value_list_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, fqdn_value_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if fqdn_value_list_old is not None and not (isinstance(fqdn_value_list_old, list)):
-			raise ValueError(f"'fqdn_value_list' of incorrect type. Expected list, got {type(fqdn_value_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, fqdn_value_list_old=fqdn_value_list_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'dns.fqdn2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'fqdn_value': fqdn_value_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_value_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(fqdn_value_old, str)):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(fqdn_value_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, fqdn_value_old=fqdn_value_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordImp(APIObject):
-	ttl: int
-	type: str
-	data_list: str
-	ttl_reset_days: int
-	target_is_singleton: bool
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if self.ttl is not None and not isinstance(self.ttl, int):
-			raise ValueError(f"'ttl' of incorrect type. Expected int, got {type(self.ttl)}")
-		if self.type is not None and not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.data_list is not None and not isinstance(self.data_list, str):
-			raise ValueError(f"'data_list' of incorrect type. Expected str, got {type(self.data_list)}")
-		if self.ttl_reset_days is not None and not isinstance(self.ttl_reset_days, int):
-			raise ValueError(f"'ttl_reset_days' of incorrect type. Expected int, got {type(self.ttl_reset_days)}")
-		if self.target_is_singleton is not None and not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self.target_is_reverse_unique is not None and not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-
-@dataclass()
-class FqdnStatistic(APIObject):
-	has_rr: bool
-	fqdn_gfk: str
-	fqdn_value: str
-	sub_fqdn_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.has_rr, bool):
-			raise ValueError(f"'has_rr' of incorrect type. Expected bool, got {type(self.has_rr)}")
-		if not isinstance(self.fqdn_gfk, str):
-			raise ValueError(f"'fqdn_gfk' of incorrect type. Expected str, got {type(self.fqdn_gfk)}")
-		if not isinstance(self.fqdn_value, str):
-			raise ValueError(f"'fqdn_value' of incorrect type. Expected str, got {type(self.fqdn_value)}")
-		if not isinstance(self.sub_fqdn_count, int):
-			raise ValueError(f"'sub_fqdn_count' of incorrect type. Expected int, got {type(self.sub_fqdn_count)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dns.fqdn_statistic.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/dnscfg.py b/4.2/golang/dnscfg.py
deleted file mode 100644
index 7602c42..0000000
--- a/4.2/golang/dnscfg.py
+++ /dev/null
@@ -1,1511 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class FqdnType(APIObject):
-	gpk: str
-	name: str
-	is_own: bool
-	is_dhcp: bool
-	is_host: bool
-	_intname: str
-	position: int
-	rad_type: int
-	_groupname: str
-	description: str
-	is_wildcard: bool
-	is_nonterminal: bool
-	version_name_dict: dict
-	permission_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_dhcp, bool):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(self.is_dhcp)}")
-		if not isinstance(self.is_host, bool):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(self.is_host)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.rad_type, int):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(self.rad_type)}")
-		if not isinstance(self._groupname, str):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(self._groupname)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_wildcard, bool):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(self.is_wildcard)}")
-		if not isinstance(self.is_nonterminal, bool):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(self.is_nonterminal)}")
-		if not isinstance(self.version_name_dict, dict):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(self.version_name_dict)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn_type.create', 'new': _denullify_dict({'name': name_new, 'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'do_include_release': do_include_release_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_dhcp_new: bool, is_host_new: bool, position_new: int, rad_type_new: int, _groupname_new: str, description_new: str, is_wildcard_new: bool, is_nonterminal_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, do_include_release_new=do_include_release_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'is_dhcp': is_dhcp_old, 'is_host': is_host_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_wildcard': is_wildcard_old, 'fetch_offset': fetch_offset_old, 'rad_type_list': rad_type_list_old, 'is_nonterminal': is_nonterminal_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, is_dhcp_old: bool = None, is_host_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_wildcard_old: bool = None, fetch_offset_old: int = None, rad_type_list_old: list = None, is_nonterminal_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if is_dhcp_old is not None and not (isinstance(is_dhcp_old, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_old)}")
-		if is_host_old is not None and not (isinstance(is_host_old, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_wildcard_old is not None and not (isinstance(is_wildcard_old, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if rad_type_list_old is not None and not (isinstance(rad_type_list_old, list)):
-			raise ValueError(f"'rad_type_list' of incorrect type. Expected list, got {type(rad_type_list_old)}")
-		if is_nonterminal_old is not None and not (isinstance(is_nonterminal_old, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, is_dhcp_old=is_dhcp_old, is_host_old=is_host_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_wildcard_old=is_wildcard_old, fetch_offset_old=fetch_offset_old, rad_type_list_old=rad_type_list_old, is_nonterminal_old=is_nonterminal_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.fqdn_type.update', 'new': _denullify_dict({'is_dhcp': is_dhcp_new, 'is_host': is_host_new, 'position': position_new, 'rad_type': rad_type_new, '_groupname': _groupname_new, 'description': description_new, 'is_wildcard': is_wildcard_new, 'is_nonterminal': is_nonterminal_new, 'version_name_dict': version_name_dict_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, is_dhcp_new: bool = None, is_host_new: bool = None, position_new: int = None, rad_type_new: int = None, _groupname_new: str = None, description_new: str = None, is_wildcard_new: bool = None, is_nonterminal_new: bool = None, version_name_dict_new: dict = None, permission_fq_name_new: Union[str, ExplicitNull] = None) -> list:
-		if is_dhcp_new is not None and not (isinstance(is_dhcp_new, bool)):
-			raise ValueError(f"'is_dhcp' of incorrect type. Expected bool, got {type(is_dhcp_new)}")
-		if is_host_new is not None and not (isinstance(is_host_new, bool)):
-			raise ValueError(f"'is_host' of incorrect type. Expected bool, got {type(is_host_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if rad_type_new is not None and not (isinstance(rad_type_new, int)):
-			raise ValueError(f"'rad_type' of incorrect type. Expected int, got {type(rad_type_new)}")
-		if _groupname_new is not None and not (isinstance(_groupname_new, str)):
-			raise ValueError(f"'_groupname' of incorrect type. Expected str, got {type(_groupname_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_wildcard_new is not None and not (isinstance(is_wildcard_new, bool)):
-			raise ValueError(f"'is_wildcard' of incorrect type. Expected bool, got {type(is_wildcard_new)}")
-		if is_nonterminal_new is not None and not (isinstance(is_nonterminal_new, bool)):
-			raise ValueError(f"'is_nonterminal' of incorrect type. Expected bool, got {type(is_nonterminal_new)}")
-		if version_name_dict_new is not None and not (isinstance(version_name_dict_new, dict)):
-			raise ValueError(f"'version_name_dict' of incorrect type. Expected dict, got {type(version_name_dict_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_dhcp_new=is_dhcp_new, is_host_new=is_host_new, position_new=position_new, rad_type_new=rad_type_new, _groupname_new=_groupname_new, description_new=description_new, is_wildcard_new=is_wildcard_new, is_nonterminal_new=is_nonterminal_new, version_name_dict_new=version_name_dict_new, permission_fq_name_new=permission_fq_name_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	name: str
-	rfc_info: str
-	num_value: int
-	is_internal: bool
-	is_addr_based: bool
-	is_name_based: bool
-	force_auto_dml: bool
-	fqdn_type_dflt: str
-	_fqdn_inttype_dflt: str
-	target_is_singleton_dflt: bool
-	target_is_reverse_unique_dflt: bool
-	dnspython_rdata_target_attribute_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.rfc_info is not None and not isinstance(self.rfc_info, str):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(self.rfc_info)}")
-		if not isinstance(self.num_value, int):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(self.num_value)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-		if not isinstance(self.is_addr_based, bool):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(self.is_addr_based)}")
-		if not isinstance(self.is_name_based, bool):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(self.is_name_based)}")
-		if not isinstance(self.force_auto_dml, bool):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(self.force_auto_dml)}")
-		if self.fqdn_type_dflt is not None and not isinstance(self.fqdn_type_dflt, str):
-			raise ValueError(f"'fqdn_type_dflt' of incorrect type. Expected str, got {type(self.fqdn_type_dflt)}")
-		if self._fqdn_inttype_dflt is not None and not isinstance(self._fqdn_inttype_dflt, str):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(self._fqdn_inttype_dflt)}")
-		if not isinstance(self.target_is_singleton_dflt, bool):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(self.target_is_singleton_dflt)}")
-		if not isinstance(self.target_is_reverse_unique_dflt, bool):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique_dflt)}")
-		if self.dnspython_rdata_target_attribute_name is not None and not isinstance(self.dnspython_rdata_target_attribute_name, str):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(self.dnspython_rdata_target_attribute_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-
-		return {'name': 'dnscfg.record_type.create', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new, 'dnspython_rdata_target_attribute_name': dnspython_rdata_target_attribute_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, num_value_new: int, is_internal_new: bool, is_addr_based_new: bool, is_name_based_new: bool, force_auto_dml_new: bool, target_is_singleton_dflt_new: bool, target_is_reverse_unique_dflt_new: bool, rfc_info_new: Union[str, ExplicitNull] = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, dnspython_rdata_target_attribute_name_new=dnspython_rdata_target_attribute_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'is_addr_based': is_addr_based_old, 'is_name_based': is_name_based_old, 'force_auto_dml': force_auto_dml_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, is_addr_based_old: bool = None, is_name_based_old: bool = None, force_auto_dml_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_addr_based_old is not None and not (isinstance(is_addr_based_old, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_old)}")
-		if is_name_based_old is not None and not (isinstance(is_name_based_old, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_old)}")
-		if force_auto_dml_old is not None and not (isinstance(force_auto_dml_old, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, is_addr_based_old=is_addr_based_old, is_name_based_old=is_name_based_old, force_auto_dml_old=force_auto_dml_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.record_type.update', 'new': _denullify_dict({'name': name_new, 'rfc_info': rfc_info_new, 'num_value': num_value_new, 'is_internal': is_internal_new, 'is_addr_based': is_addr_based_new, 'is_name_based': is_name_based_new, 'force_auto_dml': force_auto_dml_new, '_fqdn_inttype_dflt': _fqdn_inttype_dflt_new, 'target_is_singleton_dflt': target_is_singleton_dflt_new, 'target_is_reverse_unique_dflt': target_is_reverse_unique_dflt_new, 'dnspython_rdata_target_attribute_name': dnspython_rdata_target_attribute_name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, rfc_info_new: Union[str, ExplicitNull] = None, num_value_new: int = None, is_internal_new: bool = None, is_addr_based_new: bool = None, is_name_based_new: bool = None, force_auto_dml_new: bool = None, _fqdn_inttype_dflt_new: Union[str, ExplicitNull] = None, target_is_singleton_dflt_new: bool = None, target_is_reverse_unique_dflt_new: bool = None, dnspython_rdata_target_attribute_name_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if rfc_info_new is not None and not (isinstance(rfc_info_new, str) or isinstance(rfc_info_new, ExplicitNull)):
-			raise ValueError(f"'rfc_info' of incorrect type. Expected str, got {type(rfc_info_new)}")
-		if num_value_new is not None and not (isinstance(num_value_new, int)):
-			raise ValueError(f"'num_value' of incorrect type. Expected int, got {type(num_value_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if is_addr_based_new is not None and not (isinstance(is_addr_based_new, bool)):
-			raise ValueError(f"'is_addr_based' of incorrect type. Expected bool, got {type(is_addr_based_new)}")
-		if is_name_based_new is not None and not (isinstance(is_name_based_new, bool)):
-			raise ValueError(f"'is_name_based' of incorrect type. Expected bool, got {type(is_name_based_new)}")
-		if force_auto_dml_new is not None and not (isinstance(force_auto_dml_new, bool)):
-			raise ValueError(f"'force_auto_dml' of incorrect type. Expected bool, got {type(force_auto_dml_new)}")
-		if _fqdn_inttype_dflt_new is not None and not (isinstance(_fqdn_inttype_dflt_new, str) or isinstance(_fqdn_inttype_dflt_new, ExplicitNull)):
-			raise ValueError(f"'_fqdn_inttype_dflt' of incorrect type. Expected str, got {type(_fqdn_inttype_dflt_new)}")
-		if target_is_singleton_dflt_new is not None and not (isinstance(target_is_singleton_dflt_new, bool)):
-			raise ValueError(f"'target_is_singleton_dflt' of incorrect type. Expected bool, got {type(target_is_singleton_dflt_new)}")
-		if target_is_reverse_unique_dflt_new is not None and not (isinstance(target_is_reverse_unique_dflt_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique_dflt' of incorrect type. Expected bool, got {type(target_is_reverse_unique_dflt_new)}")
-		if dnspython_rdata_target_attribute_name_new is not None and not (isinstance(dnspython_rdata_target_attribute_name_new, str) or isinstance(dnspython_rdata_target_attribute_name_new, ExplicitNull)):
-			raise ValueError(f"'dnspython_rdata_target_attribute_name' of incorrect type. Expected str, got {type(dnspython_rdata_target_attribute_name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, rfc_info_new=rfc_info_new, num_value_new=num_value_new, is_internal_new=is_internal_new, is_addr_based_new=is_addr_based_new, is_name_based_new=is_name_based_new, force_auto_dml_new=force_auto_dml_new, _fqdn_inttype_dflt_new=_fqdn_inttype_dflt_new, target_is_singleton_dflt_new=target_is_singleton_dflt_new, target_is_reverse_unique_dflt_new=target_is_reverse_unique_dflt_new, dnspython_rdata_target_attribute_name_new=dnspython_rdata_target_attribute_name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class RecordInttype(APIObject):
-	gpk: str
-	is_own: bool
-	_intname: str
-	fqdn_type: str
-	description: str
-	record_type: str
-	_fqdn_inttype: str
-	target_fqdn_type: str
-	version_def_dict: dict
-	fqdn_is_singleton: bool
-	permission_fq_name: str
-	target_ipaddr_type: str
-	target_is_singleton: bool
-	_target_fqdn_inttype: str
-	target_is_reverse_unique: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self._intname, str):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(self._intname)}")
-		if not isinstance(self.fqdn_type, str):
-			raise ValueError(f"'fqdn_type' of incorrect type. Expected str, got {type(self.fqdn_type)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.record_type, str):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(self.record_type)}")
-		if not isinstance(self._fqdn_inttype, str):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(self._fqdn_inttype)}")
-		if self.target_fqdn_type is not None and not isinstance(self.target_fqdn_type, str):
-			raise ValueError(f"'target_fqdn_type' of incorrect type. Expected str, got {type(self.target_fqdn_type)}")
-		if not isinstance(self.version_def_dict, dict):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(self.version_def_dict)}")
-		if not isinstance(self.fqdn_is_singleton, bool):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(self.fqdn_is_singleton)}")
-		if self.permission_fq_name is not None and not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-		if self.target_ipaddr_type is not None and not isinstance(self.target_ipaddr_type, str):
-			raise ValueError(f"'target_ipaddr_type' of incorrect type. Expected str, got {type(self.target_ipaddr_type)}")
-		if not isinstance(self.target_is_singleton, bool):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(self.target_is_singleton)}")
-		if self._target_fqdn_inttype is not None and not isinstance(self._target_fqdn_inttype, str):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(self._target_fqdn_inttype)}")
-		if not isinstance(self.target_is_reverse_unique, bool):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(self.target_is_reverse_unique)}")
-
-	@staticmethod
-	def create_ta(description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		return {'name': 'dnscfg.record_inttype.create', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'do_include_release': do_include_release_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, description_new: str, record_type_new: str, _fqdn_inttype_new: str, fqdn_is_singleton_new: bool, target_is_singleton_new: bool, target_is_reverse_unique_new: bool, do_include_release_new: bool = True, permission_fq_name_new: Union[str, ExplicitNull] = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if do_include_release_new is not None and not (isinstance(do_include_release_new, bool)):
-			raise ValueError(f"'do_include_release' of incorrect type. Expected bool, got {type(do_include_release_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, fqdn_is_singleton_new=fqdn_is_singleton_new, do_include_release_new=do_include_release_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(_intname_old: str) -> dict:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, _intname_old: str) -> list:
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(_intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		return {'name': 'dnscfg.record_inttype.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fqdn_type_list': fqdn_type_list_old, 'record_type_list': record_type_list_old, 'fqdn_is_singleton': fqdn_is_singleton_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'target_is_singleton': target_is_singleton_old, 'target_fqdn_type_list': target_fqdn_type_list_old, 'target_is_reverse_unique': target_is_reverse_unique_old, 'record_type_is_addr_based': record_type_is_addr_based_old, 'record_type_is_name_based': record_type_is_name_based_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fqdn_type_list_old: list = None, record_type_list_old: list = None, fqdn_is_singleton_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, target_is_singleton_old: bool = None, target_fqdn_type_list_old: list = None, target_is_reverse_unique_old: bool = None, record_type_is_addr_based_old: bool = None, record_type_is_name_based_old: bool = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fqdn_type_list_old is not None and not (isinstance(fqdn_type_list_old, list)):
-			raise ValueError(f"'fqdn_type_list' of incorrect type. Expected list, got {type(fqdn_type_list_old)}")
-		if record_type_list_old is not None and not (isinstance(record_type_list_old, list)):
-			raise ValueError(f"'record_type_list' of incorrect type. Expected list, got {type(record_type_list_old)}")
-		if fqdn_is_singleton_old is not None and not (isinstance(fqdn_is_singleton_old, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if target_is_singleton_old is not None and not (isinstance(target_is_singleton_old, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_old)}")
-		if target_fqdn_type_list_old is not None and not (isinstance(target_fqdn_type_list_old, list)):
-			raise ValueError(f"'target_fqdn_type_list' of incorrect type. Expected list, got {type(target_fqdn_type_list_old)}")
-		if target_is_reverse_unique_old is not None and not (isinstance(target_is_reverse_unique_old, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_old)}")
-		if record_type_is_addr_based_old is not None and not (isinstance(record_type_is_addr_based_old, bool)):
-			raise ValueError(f"'record_type_is_addr_based' of incorrect type. Expected bool, got {type(record_type_is_addr_based_old)}")
-		if record_type_is_name_based_old is not None and not (isinstance(record_type_is_name_based_old, bool)):
-			raise ValueError(f"'record_type_is_name_based' of incorrect type. Expected bool, got {type(record_type_is_name_based_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fqdn_type_list_old=fqdn_type_list_old, record_type_list_old=record_type_list_old, fqdn_is_singleton_old=fqdn_is_singleton_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, target_is_singleton_old=target_is_singleton_old, target_fqdn_type_list_old=target_fqdn_type_list_old, target_is_reverse_unique_old=target_is_reverse_unique_old, record_type_is_addr_based_old=record_type_is_addr_based_old, record_type_is_name_based_old=record_type_is_name_based_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		return {'name': 'dnscfg.record_inttype.update', 'new': _denullify_dict({'description': description_new, 'record_type': record_type_new, '_fqdn_inttype': _fqdn_inttype_new, 'version_def_dict': version_def_dict_new, 'fqdn_is_singleton': fqdn_is_singleton_new, 'permission_fq_name': permission_fq_name_new, 'target_is_singleton': target_is_singleton_new, '_target_fqdn_inttype': _target_fqdn_inttype_new, 'target_is_reverse_unique': target_is_reverse_unique_new}), 'old': _denullify_dict({'_intname': _intname_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _intname_old: str, description_new: str = None, record_type_new: str = None, _fqdn_inttype_new: str = None, version_def_dict_new: dict = None, fqdn_is_singleton_new: bool = None, permission_fq_name_new: Union[str, ExplicitNull] = None, target_is_singleton_new: bool = None, _target_fqdn_inttype_new: Union[str, ExplicitNull] = None, target_is_reverse_unique_new: bool = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if record_type_new is not None and not (isinstance(record_type_new, str)):
-			raise ValueError(f"'record_type' of incorrect type. Expected str, got {type(record_type_new)}")
-		if _fqdn_inttype_new is not None and not (isinstance(_fqdn_inttype_new, str)):
-			raise ValueError(f"'_fqdn_inttype' of incorrect type. Expected str, got {type(_fqdn_inttype_new)}")
-		if version_def_dict_new is not None and not (isinstance(version_def_dict_new, dict)):
-			raise ValueError(f"'version_def_dict' of incorrect type. Expected dict, got {type(version_def_dict_new)}")
-		if fqdn_is_singleton_new is not None and not (isinstance(fqdn_is_singleton_new, bool)):
-			raise ValueError(f"'fqdn_is_singleton' of incorrect type. Expected bool, got {type(fqdn_is_singleton_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str) or isinstance(permission_fq_name_new, ExplicitNull)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if target_is_singleton_new is not None and not (isinstance(target_is_singleton_new, bool)):
-			raise ValueError(f"'target_is_singleton' of incorrect type. Expected bool, got {type(target_is_singleton_new)}")
-		if _target_fqdn_inttype_new is not None and not (isinstance(_target_fqdn_inttype_new, str) or isinstance(_target_fqdn_inttype_new, ExplicitNull)):
-			raise ValueError(f"'_target_fqdn_inttype' of incorrect type. Expected str, got {type(_target_fqdn_inttype_new)}")
-		if target_is_reverse_unique_new is not None and not (isinstance(target_is_reverse_unique_new, bool)):
-			raise ValueError(f"'target_is_reverse_unique' of incorrect type. Expected bool, got {type(target_is_reverse_unique_new)}")
-		if not (isinstance(_intname_old, str)):
-			raise ValueError(f"'_intname' of incorrect type. Expected str, got {type(_intname_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, record_type_new=record_type_new, _fqdn_inttype_new=_fqdn_inttype_new, version_def_dict_new=version_def_dict_new, fqdn_is_singleton_new=fqdn_is_singleton_new, permission_fq_name_new=permission_fq_name_new, target_is_singleton_new=target_is_singleton_new, _target_fqdn_inttype_new=_target_fqdn_inttype_new, target_is_reverse_unique_new=target_is_reverse_unique_new, _intname_old=_intname_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSet(APIObject):
-	gpk: str
-	name: str
-	description: str
-	soa_data_retry: int
-	soa_data_expire: int
-	soa_data_minimum: int
-	soa_data_refresh: int
-	soa_data_hostmaster: str
-	members_are_exclusive: bool
-	zone_data_is_external: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.soa_data_retry, int):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(self.soa_data_retry)}")
-		if not isinstance(self.soa_data_expire, int):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(self.soa_data_expire)}")
-		if not isinstance(self.soa_data_minimum, int):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(self.soa_data_minimum)}")
-		if not isinstance(self.soa_data_refresh, int):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(self.soa_data_refresh)}")
-		if not isinstance(self.soa_data_hostmaster, str):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(self.soa_data_hostmaster)}")
-		if not isinstance(self.members_are_exclusive, bool):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(self.members_are_exclusive)}")
-		if not isinstance(self.zone_data_is_external, bool):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(self.zone_data_is_external)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		return {'name': 'dnscfg.ns_set.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = 1800, soa_data_expire_new: int = 2592000, soa_data_minimum_new: int = 600, soa_data_refresh_new: int = 10800, soa_data_hostmaster_new: str = 'hostmaster.kit.edu.', members_are_exclusive_new: bool = False, zone_data_is_external_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		return {'name': 'dnscfg.ns_set.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'soa_data_retry': soa_data_retry_old, 'soa_data_expire': soa_data_expire_old, 'soa_data_minimum': soa_data_minimum_old, 'soa_data_refresh': soa_data_refresh_old, 'filter_params_dict': filter_params_dict_old, 'soa_data_hostmaster': soa_data_hostmaster_old, 'sorting_params_list': sorting_params_list_old, 'members_are_exclusive': members_are_exclusive_old, 'zone_data_is_external': zone_data_is_external_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, soa_data_retry_old: int = None, soa_data_expire_old: int = None, soa_data_minimum_old: int = None, soa_data_refresh_old: int = None, filter_params_dict_old: dict = None, soa_data_hostmaster_old: str = None, sorting_params_list_old: list = None, members_are_exclusive_old: bool = None, zone_data_is_external_old: bool = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if soa_data_retry_old is not None and not (isinstance(soa_data_retry_old, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_old)}")
-		if soa_data_expire_old is not None and not (isinstance(soa_data_expire_old, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_old)}")
-		if soa_data_minimum_old is not None and not (isinstance(soa_data_minimum_old, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_old)}")
-		if soa_data_refresh_old is not None and not (isinstance(soa_data_refresh_old, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if soa_data_hostmaster_old is not None and not (isinstance(soa_data_hostmaster_old, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if members_are_exclusive_old is not None and not (isinstance(members_are_exclusive_old, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_old)}")
-		if zone_data_is_external_old is not None and not (isinstance(zone_data_is_external_old, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, soa_data_retry_old=soa_data_retry_old, soa_data_expire_old=soa_data_expire_old, soa_data_minimum_old=soa_data_minimum_old, soa_data_refresh_old=soa_data_refresh_old, filter_params_dict_old=filter_params_dict_old, soa_data_hostmaster_old=soa_data_hostmaster_old, sorting_params_list_old=sorting_params_list_old, members_are_exclusive_old=members_are_exclusive_old, zone_data_is_external_old=zone_data_is_external_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.ns_set.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'soa_data_retry': soa_data_retry_new, 'soa_data_expire': soa_data_expire_new, 'soa_data_minimum': soa_data_minimum_new, 'soa_data_refresh': soa_data_refresh_new, 'soa_data_hostmaster': soa_data_hostmaster_new, 'members_are_exclusive': members_are_exclusive_new, 'zone_data_is_external': zone_data_is_external_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, soa_data_retry_new: int = None, soa_data_expire_new: int = None, soa_data_minimum_new: int = None, soa_data_refresh_new: int = None, soa_data_hostmaster_new: str = None, members_are_exclusive_new: bool = None, zone_data_is_external_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if soa_data_retry_new is not None and not (isinstance(soa_data_retry_new, int)):
-			raise ValueError(f"'soa_data_retry' of incorrect type. Expected int, got {type(soa_data_retry_new)}")
-		if soa_data_expire_new is not None and not (isinstance(soa_data_expire_new, int)):
-			raise ValueError(f"'soa_data_expire' of incorrect type. Expected int, got {type(soa_data_expire_new)}")
-		if soa_data_minimum_new is not None and not (isinstance(soa_data_minimum_new, int)):
-			raise ValueError(f"'soa_data_minimum' of incorrect type. Expected int, got {type(soa_data_minimum_new)}")
-		if soa_data_refresh_new is not None and not (isinstance(soa_data_refresh_new, int)):
-			raise ValueError(f"'soa_data_refresh' of incorrect type. Expected int, got {type(soa_data_refresh_new)}")
-		if soa_data_hostmaster_new is not None and not (isinstance(soa_data_hostmaster_new, str)):
-			raise ValueError(f"'soa_data_hostmaster' of incorrect type. Expected str, got {type(soa_data_hostmaster_new)}")
-		if members_are_exclusive_new is not None and not (isinstance(members_are_exclusive_new, bool)):
-			raise ValueError(f"'members_are_exclusive' of incorrect type. Expected bool, got {type(members_are_exclusive_new)}")
-		if zone_data_is_external_new is not None and not (isinstance(zone_data_is_external_new, bool)):
-			raise ValueError(f"'zone_data_is_external' of incorrect type. Expected bool, got {type(zone_data_is_external_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, soa_data_retry_new=soa_data_retry_new, soa_data_expire_new=soa_data_expire_new, soa_data_minimum_new=soa_data_minimum_new, soa_data_refresh_new=soa_data_refresh_new, soa_data_hostmaster_new=soa_data_hostmaster_new, members_are_exclusive_new=members_are_exclusive_new, zone_data_is_external_new=zone_data_is_external_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetMember(APIObject):
-	gpk: str
-	ns_fqdn: str
-	ns_set_name: str
-	ns_fqdn_type: str
-	ns_is_master: bool
-	ns_is_native: bool
-	ns_is_primary: bool
-	ns_is_registered: bool
-	ns_xfer_master_fqdn: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.ns_fqdn, str):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(self.ns_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-		if not isinstance(self.ns_fqdn_type, str):
-			raise ValueError(f"'ns_fqdn_type' of incorrect type. Expected str, got {type(self.ns_fqdn_type)}")
-		if not isinstance(self.ns_is_master, bool):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(self.ns_is_master)}")
-		if not isinstance(self.ns_is_native, bool):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(self.ns_is_native)}")
-		if not isinstance(self.ns_is_primary, bool):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(self.ns_is_primary)}")
-		if not isinstance(self.ns_is_registered, bool):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(self.ns_is_registered)}")
-		if self.ns_xfer_master_fqdn is not None and not isinstance(self.ns_xfer_master_fqdn, str):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(self.ns_xfer_master_fqdn)}")
-
-	@staticmethod
-	def create_ta(ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		return {'name': 'dnscfg.ns_set_member.create', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, ns_fqdn_new: str, ns_set_name_new: str, ns_is_master_new: bool, ns_is_native_new: bool, ns_is_primary_new: bool, ns_is_registered_new: bool, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(ns_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ns_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ns_fqdn_list_old is not None and not (isinstance(ns_fqdn_list_old, list)):
-			raise ValueError(f"'ns_fqdn_list' of incorrect type. Expected list, got {type(ns_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'ns_fqdn_list': ns_fqdn_list_old, 'ns_set_name_list': ns_set_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, ns_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ns_fqdn_list_old is not None and not (isinstance(ns_fqdn_list_old, list)):
-			raise ValueError(f"'ns_fqdn_list' of incorrect type. Expected list, got {type(ns_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, ns_fqdn_list_old=ns_fqdn_list_old, ns_set_name_list_old=ns_set_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> dict:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_member.update', 'new': _denullify_dict({'ns_fqdn': ns_fqdn_new, 'ns_set_name': ns_set_name_new, 'ns_is_master': ns_is_master_new, 'ns_is_native': ns_is_native_new, 'ns_is_primary': ns_is_primary_new, 'ns_is_registered': ns_is_registered_new, 'ns_xfer_master_fqdn': ns_xfer_master_fqdn_new}), 'old': _denullify_dict({'ns_fqdn': ns_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, ns_fqdn_old: str, ns_set_name_old: str, ns_fqdn_new: str = None, ns_set_name_new: str = None, ns_is_master_new: bool = None, ns_is_native_new: bool = None, ns_is_primary_new: bool = None, ns_is_registered_new: bool = None, ns_xfer_master_fqdn_new: Union[str, ExplicitNull] = None) -> list:
-		if ns_fqdn_new is not None and not (isinstance(ns_fqdn_new, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_new)}")
-		if ns_set_name_new is not None and not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-		if ns_is_master_new is not None and not (isinstance(ns_is_master_new, bool)):
-			raise ValueError(f"'ns_is_master' of incorrect type. Expected bool, got {type(ns_is_master_new)}")
-		if ns_is_native_new is not None and not (isinstance(ns_is_native_new, bool)):
-			raise ValueError(f"'ns_is_native' of incorrect type. Expected bool, got {type(ns_is_native_new)}")
-		if ns_is_primary_new is not None and not (isinstance(ns_is_primary_new, bool)):
-			raise ValueError(f"'ns_is_primary' of incorrect type. Expected bool, got {type(ns_is_primary_new)}")
-		if ns_is_registered_new is not None and not (isinstance(ns_is_registered_new, bool)):
-			raise ValueError(f"'ns_is_registered' of incorrect type. Expected bool, got {type(ns_is_registered_new)}")
-		if ns_xfer_master_fqdn_new is not None and not (isinstance(ns_xfer_master_fqdn_new, str) or isinstance(ns_xfer_master_fqdn_new, ExplicitNull)):
-			raise ValueError(f"'ns_xfer_master_fqdn' of incorrect type. Expected str, got {type(ns_xfer_master_fqdn_new)}")
-		if not (isinstance(ns_fqdn_old, str)):
-			raise ValueError(f"'ns_fqdn' of incorrect type. Expected str, got {type(ns_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ns_fqdn_new=ns_fqdn_new, ns_set_name_new=ns_set_name_new, ns_is_master_new=ns_is_master_new, ns_is_native_new=ns_is_native_new, ns_is_primary_new=ns_is_primary_new, ns_is_registered_new=ns_is_registered_new, ns_xfer_master_fqdn_new=ns_xfer_master_fqdn_new, ns_fqdn_old=ns_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Fqdn2perm(APIObject):
-	gpk: str
-	fqdn: str
-	is_recursive: bool
-	is_zone_bound: bool
-	recursive_min_lvl: int
-	permission_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.is_zone_bound, bool):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(self.is_zone_bound)}")
-		if not isinstance(self.recursive_min_lvl, int):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(self.recursive_min_lvl)}")
-		if not isinstance(self.permission_fq_name, str):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(self.permission_fq_name)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		return {'name': 'dnscfg.fqdn2perm.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_recursive_new: bool, is_zone_bound_new: bool, recursive_min_lvl_new: int, permission_fq_name_new: str) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(permission_fq_name_old: str = None) -> dict:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, permission_fq_name_old: str = None) -> list:
-		if permission_fq_name_old is not None and not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, permission_fq_name_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if permission_fq_name_list_old is not None and not (isinstance(permission_fq_name_list_old, list)):
-			raise ValueError(f"'permission_fq_name_list' of incorrect type. Expected list, got {type(permission_fq_name_list_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'permission_fq_name_list': permission_fq_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, permission_fq_name_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if permission_fq_name_list_old is not None and not (isinstance(permission_fq_name_list_old, list)):
-			raise ValueError(f"'permission_fq_name_list' of incorrect type. Expected list, got {type(permission_fq_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, permission_fq_name_list_old=permission_fq_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> dict:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		return {'name': 'dnscfg.fqdn2perm.update', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_recursive': is_recursive_new, 'is_zone_bound': is_zone_bound_new, 'recursive_min_lvl': recursive_min_lvl_new, 'permission_fq_name': permission_fq_name_new}), 'old': _denullify_dict({'permission_fq_name': permission_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, permission_fq_name_old: str, fqdn_new: str = None, is_recursive_new: bool = None, is_zone_bound_new: bool = None, recursive_min_lvl_new: int = None, permission_fq_name_new: str = None) -> list:
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if is_zone_bound_new is not None and not (isinstance(is_zone_bound_new, bool)):
-			raise ValueError(f"'is_zone_bound' of incorrect type. Expected bool, got {type(is_zone_bound_new)}")
-		if recursive_min_lvl_new is not None and not (isinstance(recursive_min_lvl_new, int)):
-			raise ValueError(f"'recursive_min_lvl' of incorrect type. Expected int, got {type(recursive_min_lvl_new)}")
-		if permission_fq_name_new is not None and not (isinstance(permission_fq_name_new, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_new)}")
-		if not (isinstance(permission_fq_name_old, str)):
-			raise ValueError(f"'permission_fq_name' of incorrect type. Expected str, got {type(permission_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(fqdn_new=fqdn_new, is_recursive_new=is_recursive_new, is_zone_bound_new=is_zone_bound_new, recursive_min_lvl_new=recursive_min_lvl_new, permission_fq_name_new=permission_fq_name_new, permission_fq_name_old=permission_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class FqdnTypeGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'dnscfg.fqdn_type_group.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NsSetHost(APIObject):
-	gpk: str
-	host_fqdn: str
-	ns_set_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.host_fqdn, str):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(self.host_fqdn)}")
-		if not isinstance(self.ns_set_name, str):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(self.ns_set_name)}")
-
-	@staticmethod
-	def create_ta(host_fqdn_new: str, ns_set_name_new: str) -> dict:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		return {'name': 'dnscfg.ns_set_host.create', 'new': _denullify_dict({'host_fqdn': host_fqdn_new, 'ns_set_name': ns_set_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, host_fqdn_new: str, ns_set_name_new: str) -> list:
-		if not (isinstance(host_fqdn_new, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_new)}")
-		if not (isinstance(ns_set_name_new, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(host_fqdn_new=host_fqdn_new, ns_set_name_new=ns_set_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(host_fqdn_old: str, ns_set_name_old: str) -> dict:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'host_fqdn': host_fqdn_old, 'ns_set_name': ns_set_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, host_fqdn_old: str, ns_set_name_old: str) -> list:
-		if not (isinstance(host_fqdn_old, str)):
-			raise ValueError(f"'host_fqdn' of incorrect type. Expected str, got {type(host_fqdn_old)}")
-		if not (isinstance(ns_set_name_old, str)):
-			raise ValueError(f"'ns_set_name' of incorrect type. Expected str, got {type(ns_set_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(host_fqdn_old=host_fqdn_old, ns_set_name_old=ns_set_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, host_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if host_fqdn_list_old is not None and not (isinstance(host_fqdn_list_old, list)):
-			raise ValueError(f"'host_fqdn_list' of incorrect type. Expected list, got {type(host_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnscfg.ns_set_host.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'host_fqdn_list': host_fqdn_list_old, 'ns_set_name_list': ns_set_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, host_fqdn_list_old: list = None, ns_set_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if host_fqdn_list_old is not None and not (isinstance(host_fqdn_list_old, list)):
-			raise ValueError(f"'host_fqdn_list' of incorrect type. Expected list, got {type(host_fqdn_list_old)}")
-		if ns_set_name_list_old is not None and not (isinstance(ns_set_name_list_old, list)):
-			raise ValueError(f"'ns_set_name_list' of incorrect type. Expected list, got {type(ns_set_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, host_fqdn_list_old=host_fqdn_list_old, ns_set_name_list_old=ns_set_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/dnssec.py b/4.2/golang/dnssec.py
deleted file mode 100644
index 7926bd2..0000000
--- a/4.2/golang/dnssec.py
+++ /dev/null
@@ -1,133 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class ZoneKey(APIObject):
-	gpk: str
-	tag: int
-	data: str
-	fqdn: str
-	flags: int
-	is_ksk: bool
-	is_active: bool
-	creation_ts: str
-	activation_ts: str
-	dnskey_rr_data: str
-	deactivation_ts: str
-	ds_rr_data_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.tag is not None and not isinstance(self.tag, int):
-			raise ValueError(f"'tag' of incorrect type. Expected int, got {type(self.tag)}")
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.flags, int):
-			raise ValueError(f"'flags' of incorrect type. Expected int, got {type(self.flags)}")
-		if not isinstance(self.is_ksk, bool):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(self.is_ksk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.creation_ts, str):
-			raise ValueError(f"'creation_ts' of incorrect type. Expected str, got {type(self.creation_ts)}")
-		if self.activation_ts is not None and not isinstance(self.activation_ts, str):
-			raise ValueError(f"'activation_ts' of incorrect type. Expected str, got {type(self.activation_ts)}")
-		if not isinstance(self.dnskey_rr_data, str):
-			raise ValueError(f"'dnskey_rr_data' of incorrect type. Expected str, got {type(self.dnskey_rr_data)}")
-		if self.deactivation_ts is not None and not isinstance(self.deactivation_ts, str):
-			raise ValueError(f"'deactivation_ts' of incorrect type. Expected str, got {type(self.deactivation_ts)}")
-		if not isinstance(self.ds_rr_data_list, list):
-			raise ValueError(f"'ds_rr_data_list' of incorrect type. Expected list, got {type(self.ds_rr_data_list)}")
-
-	@staticmethod
-	def create_ta(fqdn_new: str, is_ksk_new: bool) -> dict:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		return {'name': 'dnssec.zone_key.create', 'new': _denullify_dict({'fqdn': fqdn_new, 'is_ksk': is_ksk_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, fqdn_new: str, is_ksk_new: bool) -> list:
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(is_ksk_new, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(fqdn_new=fqdn_new, is_ksk_new=is_ksk_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'dnssec.zone_key.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(fqdn_old: str = None, is_ksk_old: bool = None, gpk_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'dnssec.zone_key.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old, 'is_ksk': is_ksk_old, 'gpk_list': gpk_list_old, 'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fqdn_old: str = None, is_ksk_old: bool = None, gpk_list_old: list = None, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fqdn_old is not None and not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-		if is_ksk_old is not None and not (isinstance(is_ksk_old, bool)):
-			raise ValueError(f"'is_ksk' of incorrect type. Expected bool, got {type(is_ksk_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fqdn_old=fqdn_old, is_ksk_old=is_ksk_old, gpk_list_old=gpk_list_old, is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/evlog.py b/4.2/golang/evlog.py
deleted file mode 100644
index 9c376b4..0000000
--- a/4.2/golang/evlog.py
+++ /dev/null
@@ -1,262 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class RecordType(APIObject):
-	gpk: str
-	short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-
-	@staticmethod
-	def create_ta(short_name_new: str) -> dict:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'evlog.record_type.create', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, short_name_new: str) -> list:
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'evlog.record_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, short_name_new: str = None) -> dict:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'evlog.record_type.update', 'new': _denullify_dict({'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, short_name_new: str = None) -> list:
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Record(APIObject):
-	data: str
-	type: str
-	object_gfk: str
-	language_tag: str
-	ta_timestamp: str
-	mgr_login_name: str
-	log_params_dict: dict
-	object_type_fq_name: str
-
-	def __post_init__(self):
-		if self.data is not None and not isinstance(self.data, str):
-			raise ValueError(f"'data' of incorrect type. Expected str, got {type(self.data)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.object_gfk, str):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(self.object_gfk)}")
-		if not isinstance(self.language_tag, str):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(self.language_tag)}")
-		if not isinstance(self.ta_timestamp, str):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(self.ta_timestamp)}")
-		if self.mgr_login_name is not None and not isinstance(self.mgr_login_name, str):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(self.mgr_login_name)}")
-		if not isinstance(self.log_params_dict, dict):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(self.log_params_dict)}")
-		if not isinstance(self.object_type_fq_name, str):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(self.object_type_fq_name)}")
-
-	@staticmethod
-	def create_ta(text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> dict:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		return {'name': 'evlog.record.create', 'new': _denullify_dict({'text': text_new, 'type': type_new, 'object_pk': object_pk_new, 'object_gfk': object_gfk_new, 'ta_timestamp': ta_timestamp_new, 'object_type_fq_name': object_type_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, text_new: str, type_new: str = None, object_pk_new: int = None, object_gfk_new: str = None, ta_timestamp_new: str = None, object_type_fq_name_new: str = None) -> list:
-		if not (isinstance(text_new, str)):
-			raise ValueError(f"'text' of incorrect type. Expected str, got {type(text_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if object_pk_new is not None and not (isinstance(object_pk_new, int)):
-			raise ValueError(f"'object_pk' of incorrect type. Expected int, got {type(object_pk_new)}")
-		if object_gfk_new is not None and not (isinstance(object_gfk_new, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_new)}")
-		if ta_timestamp_new is not None and not (isinstance(ta_timestamp_new, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_new)}")
-		if object_type_fq_name_new is not None and not (isinstance(object_type_fq_name_new, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(text_new=text_new, type_new=type_new, object_pk_new=object_pk_new, object_gfk_new=object_gfk_new, ta_timestamp_new=ta_timestamp_new, object_type_fq_name_new=object_type_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, log_param_state_old: int = None, log_param_value_old: str = None, log_params_dict_old: dict = None, log_param_fq_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, log_param_value_regexp_old: str = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if log_param_state_old is not None and not (isinstance(log_param_state_old, int)):
-			raise ValueError(f"'log_param_state' of incorrect type. Expected int, got {type(log_param_state_old)}")
-		if log_param_value_old is not None and not (isinstance(log_param_value_old, str)):
-			raise ValueError(f"'log_param_value' of incorrect type. Expected str, got {type(log_param_value_old)}")
-		if log_params_dict_old is not None and not (isinstance(log_params_dict_old, dict)):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(log_params_dict_old)}")
-		if log_param_fq_name_old is not None and not (isinstance(log_param_fq_name_old, str)):
-			raise ValueError(f"'log_param_fq_name' of incorrect type. Expected str, got {type(log_param_fq_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if log_param_value_regexp_old is not None and not (isinstance(log_param_value_regexp_old, str)):
-			raise ValueError(f"'log_param_value_regexp' of incorrect type. Expected str, got {type(log_param_value_regexp_old)}")
-
-		return {'name': 'evlog.record.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'top_n': top_n_old, 'type_list': type_list_old, 'object_gfk': object_gfk_old, 'ta_interval': ta_interval_old, 'language_tag': language_tag_old, 'ta_timestamp': ta_timestamp_old, 'mgr_login_name': mgr_login_name_old, 'log_param_state': log_param_state_old, 'log_param_value': log_param_value_old, 'log_params_dict': log_params_dict_old, 'log_param_fq_name': log_param_fq_name_old, 'top_n_from_newest': top_n_from_newest_old, 'filter_params_dict': filter_params_dict_old, 'object_type_fq_name': object_type_fq_name_old, 'sorting_params_list': sorting_params_list_old, 'log_param_value_regexp': log_param_value_regexp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, top_n_old: int = None, type_list_old: list = None, object_gfk_old: str = None, ta_interval_old: str = None, language_tag_old: str = None, ta_timestamp_old: str = None, mgr_login_name_old: str = None, log_param_state_old: int = None, log_param_value_old: str = None, log_params_dict_old: dict = None, log_param_fq_name_old: str = None, top_n_from_newest_old: bool = True, filter_params_dict_old: dict = None, object_type_fq_name_old: str = None, sorting_params_list_old: list = None, log_param_value_regexp_old: str = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if top_n_old is not None and not (isinstance(top_n_old, int)):
-			raise ValueError(f"'top_n' of incorrect type. Expected int, got {type(top_n_old)}")
-		if type_list_old is not None and not (isinstance(type_list_old, list)):
-			raise ValueError(f"'type_list' of incorrect type. Expected list, got {type(type_list_old)}")
-		if object_gfk_old is not None and not (isinstance(object_gfk_old, str)):
-			raise ValueError(f"'object_gfk' of incorrect type. Expected str, got {type(object_gfk_old)}")
-		if ta_interval_old is not None and not (isinstance(ta_interval_old, str)):
-			raise ValueError(f"'ta_interval' of incorrect type. Expected str, got {type(ta_interval_old)}")
-		if language_tag_old is not None and not (isinstance(language_tag_old, str)):
-			raise ValueError(f"'language_tag' of incorrect type. Expected str, got {type(language_tag_old)}")
-		if ta_timestamp_old is not None and not (isinstance(ta_timestamp_old, str)):
-			raise ValueError(f"'ta_timestamp' of incorrect type. Expected str, got {type(ta_timestamp_old)}")
-		if mgr_login_name_old is not None and not (isinstance(mgr_login_name_old, str)):
-			raise ValueError(f"'mgr_login_name' of incorrect type. Expected str, got {type(mgr_login_name_old)}")
-		if log_param_state_old is not None and not (isinstance(log_param_state_old, int)):
-			raise ValueError(f"'log_param_state' of incorrect type. Expected int, got {type(log_param_state_old)}")
-		if log_param_value_old is not None and not (isinstance(log_param_value_old, str)):
-			raise ValueError(f"'log_param_value' of incorrect type. Expected str, got {type(log_param_value_old)}")
-		if log_params_dict_old is not None and not (isinstance(log_params_dict_old, dict)):
-			raise ValueError(f"'log_params_dict' of incorrect type. Expected dict, got {type(log_params_dict_old)}")
-		if log_param_fq_name_old is not None and not (isinstance(log_param_fq_name_old, str)):
-			raise ValueError(f"'log_param_fq_name' of incorrect type. Expected str, got {type(log_param_fq_name_old)}")
-		if top_n_from_newest_old is not None and not (isinstance(top_n_from_newest_old, bool)):
-			raise ValueError(f"'top_n_from_newest' of incorrect type. Expected bool, got {type(top_n_from_newest_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if object_type_fq_name_old is not None and not (isinstance(object_type_fq_name_old, str)):
-			raise ValueError(f"'object_type_fq_name' of incorrect type. Expected str, got {type(object_type_fq_name_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if log_param_value_regexp_old is not None and not (isinstance(log_param_value_regexp_old, str)):
-			raise ValueError(f"'log_param_value_regexp' of incorrect type. Expected str, got {type(log_param_value_regexp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, top_n_old=top_n_old, type_list_old=type_list_old, object_gfk_old=object_gfk_old, ta_interval_old=ta_interval_old, language_tag_old=language_tag_old, ta_timestamp_old=ta_timestamp_old, mgr_login_name_old=mgr_login_name_old, log_param_state_old=log_param_state_old, log_param_value_old=log_param_value_old, log_params_dict_old=log_params_dict_old, log_param_fq_name_old=log_param_fq_name_old, top_n_from_newest_old=top_n_from_newest_old, filter_params_dict_old=filter_params_dict_old, object_type_fq_name_old=object_type_fq_name_old, sorting_params_list_old=sorting_params_list_old, log_param_value_regexp_old=log_param_value_regexp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/macauth.py b/4.2/golang/macauth.py
deleted file mode 100644
index 3dc7ecc..0000000
--- a/4.2/golang/macauth.py
+++ /dev/null
@@ -1,167 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Client(APIObject):
-	gpk: str
-	is_own: bool
-	wpa_key: str
-	bcd_name: str
-	mac_addr: str
-	description: str
-	last_login_date: str
-	last_login_node_info: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.wpa_key is not None and not isinstance(self.wpa_key, str):
-			raise ValueError(f"'wpa_key' of incorrect type. Expected str, got {type(self.wpa_key)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.mac_addr, str):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(self.mac_addr)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.last_login_date is not None and not isinstance(self.last_login_date, str):
-			raise ValueError(f"'last_login_date' of incorrect type. Expected str, got {type(self.last_login_date)}")
-		if self.last_login_node_info is not None and not isinstance(self.last_login_node_info, str):
-			raise ValueError(f"'last_login_node_info' of incorrect type. Expected str, got {type(self.last_login_node_info)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		return {'name': 'macauth.client.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, mac_addr_new: str, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = True) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(mac_addr_old: str) -> dict:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, mac_addr_old: str) -> list:
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, mac_addr_list_old: list = None, description_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mac_addr_list_old is not None and not (isinstance(mac_addr_list_old, list)):
-			raise ValueError(f"'mac_addr_list' of incorrect type. Expected list, got {type(mac_addr_list_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'macauth.client.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'bcd_name': bcd_name_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'mac_addr_list': mac_addr_list_old, 'description_regexp': description_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, bcd_name_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, mac_addr_list_old: list = None, description_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if bcd_name_old is not None and not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mac_addr_list_old is not None and not (isinstance(mac_addr_list_old, list)):
-			raise ValueError(f"'mac_addr_list' of incorrect type. Expected list, got {type(mac_addr_list_old)}")
-		if description_regexp_old is not None and not (isinstance(description_regexp_old, str) or isinstance(description_regexp_old, ExplicitNull)):
-			raise ValueError(f"'description_regexp' of incorrect type. Expected str, got {type(description_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, bcd_name_old=bcd_name_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, mac_addr_list_old=mac_addr_list_old, description_regexp_old=description_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> dict:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		return {'name': 'macauth.client.update', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'mac_addr': mac_addr_new, 'description': description_new, 'do_refresh_wpa_key': do_refresh_wpa_key_new}), 'old': _denullify_dict({'mac_addr': mac_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, mac_addr_old: str, bcd_name_new: str = None, mac_addr_new: str = None, description_new: Union[str, ExplicitNull] = None, do_refresh_wpa_key_new: bool = None) -> list:
-		if bcd_name_new is not None and not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if mac_addr_new is not None and not (isinstance(mac_addr_new, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if do_refresh_wpa_key_new is not None and not (isinstance(do_refresh_wpa_key_new, bool)):
-			raise ValueError(f"'do_refresh_wpa_key' of incorrect type. Expected bool, got {type(do_refresh_wpa_key_new)}")
-		if not (isinstance(mac_addr_old, str)):
-			raise ValueError(f"'mac_addr' of incorrect type. Expected str, got {type(mac_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_name_new=bcd_name_new, mac_addr_new=mac_addr_new, description_new=description_new, do_refresh_wpa_key_new=do_refresh_wpa_key_new, mac_addr_old=mac_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/nd.py b/4.2/golang/nd.py
deleted file mode 100644
index f6d9e38..0000000
--- a/4.2/golang/nd.py
+++ /dev/null
@@ -1,4287 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class IpSubnet(APIObject):
-	bcd: str
-	gpk: str
-	cidr: str
-	type: str
-	is_own: bool
-	is_private: bool
-	description: str
-	is_routable: bool
-	is_container: bool
-	default_gateway: str
-	is_iana_registered: bool
-	auto_create_ip_address: bool
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.is_private, bool):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(self.is_private)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if not isinstance(self.is_container, bool):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(self.is_container)}")
-		if self.default_gateway is not None and not isinstance(self.default_gateway, str):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(self.default_gateway)}")
-		if not isinstance(self.is_iana_registered, bool):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(self.is_iana_registered)}")
-		if not isinstance(self.auto_create_ip_address, bool):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(self.auto_create_ip_address)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		return {'name': 'nd.ip_subnet.create', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'create_ipaddrs': create_ipaddrs_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new, 'auto_create_default_gateway': auto_create_default_gateway_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, cidr_new: str, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = True, is_container_new: bool = False, create_ipaddrs_new: bool = True, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = False, auto_create_ip_address_new: bool = True, auto_create_default_gateway_new: bool = False) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if create_ipaddrs_new is not None and not (isinstance(create_ipaddrs_new, bool)):
-			raise ValueError(f"'create_ipaddrs' of incorrect type. Expected bool, got {type(create_ipaddrs_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if auto_create_default_gateway_new is not None and not (isinstance(auto_create_default_gateway_new, bool)):
-			raise ValueError(f"'auto_create_default_gateway' of incorrect type. Expected bool, got {type(auto_create_default_gateway_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, create_ipaddrs_new=create_ipaddrs_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, auto_create_default_gateway_new=auto_create_default_gateway_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> dict:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		return {'name': 'nd.ip_subnet.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'cidr': cidr_old, 'delete_dns_rrs': delete_dns_rrs_old, 'delete_ipaddrs': delete_ipaddrs_old, 'delete_dhcp_objects': delete_dhcp_objects_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, cidr_old: str, delete_dns_rrs_old: bool = False, delete_ipaddrs_old: bool = False, delete_dhcp_objects_old: bool = False) -> list:
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if delete_dns_rrs_old is not None and not (isinstance(delete_dns_rrs_old, bool)):
-			raise ValueError(f"'delete_dns_rrs' of incorrect type. Expected bool, got {type(delete_dns_rrs_old)}")
-		if delete_ipaddrs_old is not None and not (isinstance(delete_ipaddrs_old, bool)):
-			raise ValueError(f"'delete_ipaddrs' of incorrect type. Expected bool, got {type(delete_ipaddrs_old)}")
-		if delete_dhcp_objects_old is not None and not (isinstance(delete_dhcp_objects_old, bool)):
-			raise ValueError(f"'delete_dhcp_objects' of incorrect type. Expected bool, got {type(delete_dhcp_objects_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(cidr_old=cidr_old, delete_dns_rrs_old=delete_dns_rrs_old, delete_ipaddrs_old=delete_ipaddrs_old, delete_dhcp_objects_old=delete_dhcp_objects_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(bcd_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, cidr_list_old: list = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> dict:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if cidr_list_old is not None and not (isinstance(cidr_list_old, list)):
-			raise ValueError(f"'cidr_list' of incorrect type. Expected list, got {type(cidr_list_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		return {'name': 'nd.ip_subnet.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd': bcd_old, 'cidr': cidr_old, 'type': type_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'cidr_list': cidr_list_old, 'is_private': is_private_old, 'fetch_limit': fetch_limit_old, 'is_routable': is_routable_old, 'fetch_offset': fetch_offset_old, 'is_container': is_container_old, 'cidr_operator': cidr_operator_old, 'default_gateway': default_gateway_old, 'filter_params_dict': filter_params_dict_old, 'is_iana_registered': is_iana_registered_old, 'sorting_params_list': sorting_params_list_old, 'auto_create_ip_address': auto_create_ip_address_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, bcd_old: str = None, cidr_old: str = None, type_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, cidr_list_old: list = None, is_private_old: bool = None, fetch_limit_old: int = None, is_routable_old: bool = None, fetch_offset_old: int = None, is_container_old: bool = None, cidr_operator_old: str = None, default_gateway_old: str = None, filter_params_dict_old: dict = None, is_iana_registered_old: bool = None, sorting_params_list_old: list = None, auto_create_ip_address_old: bool = None) -> list:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if cidr_list_old is not None and not (isinstance(cidr_list_old, list)):
-			raise ValueError(f"'cidr_list' of incorrect type. Expected list, got {type(cidr_list_old)}")
-		if is_private_old is not None and not (isinstance(is_private_old, bool)):
-			raise ValueError(f"'is_private' of incorrect type. Expected bool, got {type(is_private_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_routable_old is not None and not (isinstance(is_routable_old, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_container_old is not None and not (isinstance(is_container_old, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_old)}")
-		if cidr_operator_old is not None and not (isinstance(cidr_operator_old, str)):
-			raise ValueError(f"'cidr_operator' of incorrect type. Expected str, got {type(cidr_operator_old)}")
-		if default_gateway_old is not None and not (isinstance(default_gateway_old, str) or isinstance(default_gateway_old, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if is_iana_registered_old is not None and not (isinstance(is_iana_registered_old, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if auto_create_ip_address_old is not None and not (isinstance(auto_create_ip_address_old, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(bcd_old=bcd_old, cidr_old=cidr_old, type_old=type_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, cidr_list_old=cidr_list_old, is_private_old=is_private_old, fetch_limit_old=fetch_limit_old, is_routable_old=is_routable_old, fetch_offset_old=fetch_offset_old, is_container_old=is_container_old, cidr_operator_old=cidr_operator_old, default_gateway_old=default_gateway_old, filter_params_dict_old=filter_params_dict_old, is_iana_registered_old=is_iana_registered_old, sorting_params_list_old=sorting_params_list_old, auto_create_ip_address_old=auto_create_ip_address_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		return {'name': 'nd.ip_subnet.update', 'new': _denullify_dict({'bcd': bcd_new, 'cidr': cidr_new, 'description': description_new, 'is_routable': is_routable_new, 'is_container': is_container_new, 'default_gateway': default_gateway_new, 'is_iana_registered': is_iana_registered_new, 'auto_create_ip_address': auto_create_ip_address_new}), 'old': _denullify_dict({'cidr': cidr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, cidr_old: str, bcd_new: str = None, cidr_new: str = None, description_new: Union[str, ExplicitNull] = None, is_routable_new: bool = None, is_container_new: bool = None, default_gateway_new: Union[str, ExplicitNull] = None, is_iana_registered_new: bool = None, auto_create_ip_address_new: bool = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if cidr_new is not None and not (isinstance(cidr_new, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_routable_new is not None and not (isinstance(is_routable_new, bool)):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(is_routable_new)}")
-		if is_container_new is not None and not (isinstance(is_container_new, bool)):
-			raise ValueError(f"'is_container' of incorrect type. Expected bool, got {type(is_container_new)}")
-		if default_gateway_new is not None and not (isinstance(default_gateway_new, str) or isinstance(default_gateway_new, ExplicitNull)):
-			raise ValueError(f"'default_gateway' of incorrect type. Expected str, got {type(default_gateway_new)}")
-		if is_iana_registered_new is not None and not (isinstance(is_iana_registered_new, bool)):
-			raise ValueError(f"'is_iana_registered' of incorrect type. Expected bool, got {type(is_iana_registered_new)}")
-		if auto_create_ip_address_new is not None and not (isinstance(auto_create_ip_address_new, bool)):
-			raise ValueError(f"'auto_create_ip_address' of incorrect type. Expected bool, got {type(auto_create_ip_address_new)}")
-		if not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, cidr_new=cidr_new, description_new=description_new, is_routable_new=is_routable_new, is_container_new=is_container_new, default_gateway_new=default_gateway_new, is_iana_registered_new=is_iana_registered_new, auto_create_ip_address_new=auto_create_ip_address_new, cidr_old=cidr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	description: str
-	label_sortby: str
-	parent_fq_module: str
-	sub_module_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.label_sortby, str):
-			raise ValueError(f"'label_sortby' of incorrect type. Expected str, got {type(self.label_sortby)}")
-		if not isinstance(self.parent_fq_module, str):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(self.parent_fq_module)}")
-		if not isinstance(self.sub_module_count, int):
-			raise ValueError(f"'sub_module_count' of incorrect type. Expected int, got {type(self.sub_module_count)}")
-
-	@staticmethod
-	def list_ta(type_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, room_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.slot.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'gpk_list': gpk_list_old, 'bldg_list': bldg_list_old, 'room_list': room_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'parent_fq_module': parent_fq_module_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, room_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, parent_fq_module_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if parent_fq_module_old is not None and not (isinstance(parent_fq_module_old, str)):
-			raise ValueError(f"'parent_fq_module' of incorrect type. Expected str, got {type(parent_fq_module_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, gpk_list_old=gpk_list_old, bldg_list_old=bldg_list_old, room_list_old=room_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, parent_fq_module_old=parent_fq_module_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.slot.update', 'new': _denullify_dict({'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, bldg_new: str = None, room_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Floor(APIObject):
-	gpk: str
-	name: str
-	description: str
-	name_sortby: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, int):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(self.name_sortby)}")
-
-	@staticmethod
-	def create_ta(name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		return {'name': 'nd.floor.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, name_sortby_new: int, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.floor.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.floor.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'name_sortby': name_sortby_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None, name_sortby_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if name_sortby_new is not None and not (isinstance(name_sortby_new, int)):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected int, got {type(name_sortby_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_sortby_new=name_sortby_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Room(APIObject):
-	gpk: str
-	bldg: str
-	name: str
-	floor: str
-	number: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.floor, str):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(self.floor)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.room.create', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bldg_new: str, name_new: str, floor_new: str, number_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bldg_old: str, number_old: str) -> dict:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bldg_old: str, number_old: str) -> list:
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, floor_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.room.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'floor': floor_old, 'gpk_list': gpk_list_old, 'bldg_list': bldg_list_old, 'fetch_limit': fetch_limit_old, 'number_list': number_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, floor_old: str = None, gpk_list_old: list = None, bldg_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if floor_old is not None and not (isinstance(floor_old, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, floor_old=floor_old, gpk_list_old=gpk_list_old, bldg_list_old=bldg_list_old, fetch_limit_old=fetch_limit_old, number_list_old=number_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.room.update', 'new': _denullify_dict({'bldg': bldg_new, 'name': name_new, 'floor': floor_new, 'number': number_new, 'description': description_new}), 'old': _denullify_dict({'bldg': bldg_old, 'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bldg_old: str, number_old: str, bldg_new: str = None, name_new: str = None, floor_new: str = None, number_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bldg_new is not None and not (isinstance(bldg_new, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if floor_new is not None and not (isinstance(floor_new, str)):
-			raise ValueError(f"'floor' of incorrect type. Expected str, got {type(floor_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(bldg_old, str)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bldg_new=bldg_new, name_new=name_new, floor_new=floor_new, number_new=number_new, description_new=description_new, bldg_old=bldg_old, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module(APIObject):
-	ap: str
-	gpk: str
-	bldg: str
-	room: str
-	type: str
-	label: str
-	fq_name: str
-	is_child: bool
-	root_gfk: str
-	is_active: bool
-	tree_level: int
-	description: str
-	has_unq_name: bool
-	is_loc_depdnt: bool
-	parent_fq_slot: str
-	module_hierarchy_gfk_list: list
-
-	def __post_init__(self):
-		if self.ap is not None and not isinstance(self.ap, str):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(self.ap)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.bldg is not None and not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if self.room is not None and not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.label, str):
-			raise ValueError(f"'label' of incorrect type. Expected str, got {type(self.label)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.root_gfk, str):
-			raise ValueError(f"'root_gfk' of incorrect type. Expected str, got {type(self.root_gfk)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-		if self.parent_fq_slot is not None and not isinstance(self.parent_fq_slot, str):
-			raise ValueError(f"'parent_fq_slot' of incorrect type. Expected str, got {type(self.parent_fq_slot)}")
-		if not isinstance(self.module_hierarchy_gfk_list, list):
-			raise ValueError(f"'module_hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.module_hierarchy_gfk_list)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		return {'name': 'nd.module.create', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'type': type_new, 'fq_name': fq_name_new, 'description': description_new, 'attributes_dict': attributes_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, description_new: Union[str, ExplicitNull] = None, attributes_dict_new: dict = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if attributes_dict_new is not None and not (isinstance(attributes_dict_new, dict)):
-			raise ValueError(f"'attributes_dict' of incorrect type. Expected dict, got {type(attributes_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, attributes_dict_new=attributes_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> dict:
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		return {'name': 'nd.module.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'force_delete_devs': force_delete_devs_old, 'force_disconnect_pp': force_disconnect_pp_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str, ap_old: str = None, bldg_old: str = None, room_old: str = None, force_delete_devs_old: bool = False, force_disconnect_pp_old: bool = False) -> list:
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if force_delete_devs_old is not None and not (isinstance(force_delete_devs_old, bool)):
-			raise ValueError(f"'force_delete_devs' of incorrect type. Expected bool, got {type(force_delete_devs_old)}")
-		if force_disconnect_pp_old is not None and not (isinstance(force_disconnect_pp_old, bool)):
-			raise ValueError(f"'force_disconnect_pp' of incorrect type. Expected bool, got {type(force_disconnect_pp_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, force_delete_devs_old=force_delete_devs_old, force_disconnect_pp_old=force_disconnect_pp_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, bldg_list_old: list = None, is_active_old: bool = None, room_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'gpk_list': gpk_list_old, 'is_child': is_child_old, 'bldg_list': bldg_list_old, 'is_active': is_active_old, 'room_list': room_list_old, 'label_list': label_list_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'has_unq_name': has_unq_name_old, 'label_regexp': label_regexp_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, bldg_list_old: list = None, is_active_old: bool = None, room_list_old: list = None, label_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, fq_name_list_old: list = None, has_unq_name_old: bool = None, label_regexp_old: str = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if bldg_list_old is not None and not (isinstance(bldg_list_old, list)):
-			raise ValueError(f"'bldg_list' of incorrect type. Expected list, got {type(bldg_list_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if room_list_old is not None and not (isinstance(room_list_old, list)):
-			raise ValueError(f"'room_list' of incorrect type. Expected list, got {type(room_list_old)}")
-		if label_list_old is not None and not (isinstance(label_list_old, list)):
-			raise ValueError(f"'label_list' of incorrect type. Expected list, got {type(label_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if label_regexp_old is not None and not (isinstance(label_regexp_old, str)):
-			raise ValueError(f"'label_regexp' of incorrect type. Expected str, got {type(label_regexp_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, gpk_list_old=gpk_list_old, is_child_old=is_child_old, bldg_list_old=bldg_list_old, is_active_old=is_active_old, room_list_old=room_list_old, label_list_old=label_list_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, has_unq_name_old=has_unq_name_old, label_regexp_old=label_regexp_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> dict:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		return {'name': 'nd.module.update', 'new': _denullify_dict({'ap': ap_new, 'bldg': bldg_new, 'room': room_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'ap': ap_old, 'bldg': bldg_old, 'room': room_old, 'fq_name': fq_name_old, 'description': description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, ap_new: Union[str, ExplicitNull] = None, bldg_new: Union[str, ExplicitNull] = None, room_new: Union[str, ExplicitNull] = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None, ap_old: str = None, bldg_old: str = None, room_old: str = None, description_old: str = None) -> list:
-		if ap_new is not None and not (isinstance(ap_new, str) or isinstance(ap_new, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_new)}")
-		if bldg_new is not None and not (isinstance(bldg_new, str) or isinstance(bldg_new, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_new)}")
-		if room_new is not None and not (isinstance(room_new, str) or isinstance(room_new, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if ap_old is not None and not (isinstance(ap_old, str) or isinstance(ap_old, ExplicitNull)):
-			raise ValueError(f"'ap' of incorrect type. Expected str, got {type(ap_old)}")
-		if bldg_old is not None and not (isinstance(bldg_old, str) or isinstance(bldg_old, ExplicitNull)):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(bldg_old)}")
-		if room_old is not None and not (isinstance(room_old, str) or isinstance(room_old, ExplicitNull)):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(room_old)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-		if description_old is not None and not (isinstance(description_old, str) or isinstance(description_old, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(ap_new=ap_new, bldg_new=bldg_new, room_new=room_new, fq_name_new=fq_name_new, description_new=description_new, ap_old=ap_old, bldg_old=bldg_old, room_old=room_old, fq_name_old=fq_name_old, description_old=description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VlanEgress(APIObject):
-	gpk: str
-	vlan_gfk: str
-	is_tagged: bool
-	l_port_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, vlan_gfk_list_old: list = None, l_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan_egress.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'is_tagged': is_tagged_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'vlan_gfk_list': vlan_gfk_list_old, 'l_port_gfk_list': l_port_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, is_tagged_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, vlan_gfk_list_old: list = None, l_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_tagged_old is not None and not (isinstance(is_tagged_old, bool)):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(is_tagged_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, is_tagged_old=is_tagged_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, vlan_gfk_list_old=vlan_gfk_list_old, l_port_gfk_list_old=l_port_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bldg(APIObject):
-	gpk: str
-	name: str
-	number: str
-	street: str
-	postal_code: int
-	geo_location: dict
-	site_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.number, str):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(self.number)}")
-		if self.street is not None and not isinstance(self.street, str):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(self.street)}")
-		if self.postal_code is not None and not isinstance(self.postal_code, int):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(self.postal_code)}")
-		if self.geo_location is not None and not isinstance(self.geo_location, dict):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(self.geo_location)}")
-		if not isinstance(self.site_fq_name, str):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(self.site_fq_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		return {'name': 'nd.bldg.create', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, number_new: str, site_fq_name_new: str, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(number_old: str) -> dict:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, number_old: str) -> list:
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		return {'name': 'nd.bldg.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'number_list': number_list_old, 'postal_code': postal_code_old, 'fetch_offset': fetch_offset_old, 'geo_location': geo_location_old, 'site_fq_name': site_fq_name_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'geo_location_distance': geo_location_distance_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, number_list_old: list = None, postal_code_old: int = None, fetch_offset_old: int = None, geo_location_old: dict = None, site_fq_name_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, geo_location_distance_old: int = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if number_list_old is not None and not (isinstance(number_list_old, list)):
-			raise ValueError(f"'number_list' of incorrect type. Expected list, got {type(number_list_old)}")
-		if postal_code_old is not None and not (isinstance(postal_code_old, int)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if geo_location_old is not None and not (isinstance(geo_location_old, dict)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_old)}")
-		if site_fq_name_old is not None and not (isinstance(site_fq_name_old, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if geo_location_distance_old is not None and not (isinstance(geo_location_distance_old, int)):
-			raise ValueError(f"'geo_location_distance' of incorrect type. Expected int, got {type(geo_location_distance_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, number_list_old=number_list_old, postal_code_old=postal_code_old, fetch_offset_old=fetch_offset_old, geo_location_old=geo_location_old, site_fq_name_old=site_fq_name_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, geo_location_distance_old=geo_location_distance_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		return {'name': 'nd.bldg.update', 'new': _denullify_dict({'name': name_new, 'number': number_new, 'street': street_new, 'postal_code': postal_code_new, 'geo_location': geo_location_new, 'site_fq_name': site_fq_name_new}), 'old': _denullify_dict({'number': number_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, number_old: str, name_new: str = None, number_new: str = None, street_new: Union[str, ExplicitNull] = None, postal_code_new: Union[int, ExplicitNull] = None, geo_location_new: Union[dict, ExplicitNull] = None, site_fq_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if number_new is not None and not (isinstance(number_new, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_new)}")
-		if street_new is not None and not (isinstance(street_new, str) or isinstance(street_new, ExplicitNull)):
-			raise ValueError(f"'street' of incorrect type. Expected str, got {type(street_new)}")
-		if postal_code_new is not None and not (isinstance(postal_code_new, int) or isinstance(postal_code_new, ExplicitNull)):
-			raise ValueError(f"'postal_code' of incorrect type. Expected int, got {type(postal_code_new)}")
-		if geo_location_new is not None and not (isinstance(geo_location_new, dict) or isinstance(geo_location_new, ExplicitNull)):
-			raise ValueError(f"'geo_location' of incorrect type. Expected dict, got {type(geo_location_new)}")
-		if site_fq_name_new is not None and not (isinstance(site_fq_name_new, str)):
-			raise ValueError(f"'site_fq_name' of incorrect type. Expected str, got {type(site_fq_name_new)}")
-		if not (isinstance(number_old, str)):
-			raise ValueError(f"'number' of incorrect type. Expected str, got {type(number_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, number_new=number_new, street_new=street_new, postal_code_new=postal_code_new, geo_location_new=geo_location_new, site_fq_name_new=site_fq_name_new, number_old=number_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort(APIObject):
-	gpk: str
-	name: str
-	type: str
-	speed: str
-	is_nnl: bool
-	mdl_bldg: str
-	mdl_room: str
-	mdl_type: str
-	protocol: str
-	module_gfk: str
-	type_group: str
-	description: str
-	mdl_fq_name: str
-	name_sortby: str
-	type_sortby: int
-	is_connected: bool
-	is_defective: bool
-	is_edge_node: bool
-	connected_gfk: str
-	connected_name: str
-	module_type_gfk: str
-	connected_mdl_bldg: str
-	connected_mdl_room: str
-	dest_connected_gfk: str
-	connection_position: int
-	connected_mdl_fq_name: str
-	is_internal_connected: bool
-	connection_id_gfk_list: list
-	internal_connected_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.speed, str):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(self.speed)}")
-		if not isinstance(self.is_nnl, bool):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(self.is_nnl)}")
-		if self.mdl_bldg is not None and not isinstance(self.mdl_bldg, str):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(self.mdl_bldg)}")
-		if self.mdl_room is not None and not isinstance(self.mdl_room, str):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(self.mdl_room)}")
-		if not isinstance(self.mdl_type, str):
-			raise ValueError(f"'mdl_type' of incorrect type. Expected str, got {type(self.mdl_type)}")
-		if not isinstance(self.protocol, str):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(self.protocol)}")
-		if not isinstance(self.module_gfk, str):
-			raise ValueError(f"'module_gfk' of incorrect type. Expected str, got {type(self.module_gfk)}")
-		if not isinstance(self.type_group, str):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(self.type_group)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if not isinstance(self.type_sortby, int):
-			raise ValueError(f"'type_sortby' of incorrect type. Expected int, got {type(self.type_sortby)}")
-		if not isinstance(self.is_connected, bool):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(self.is_connected)}")
-		if not isinstance(self.is_defective, bool):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(self.is_defective)}")
-		if not isinstance(self.is_edge_node, bool):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(self.is_edge_node)}")
-		if not isinstance(self.connected_gfk, str):
-			raise ValueError(f"'connected_gfk' of incorrect type. Expected str, got {type(self.connected_gfk)}")
-		if self.connected_name is not None and not isinstance(self.connected_name, str):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(self.connected_name)}")
-		if not isinstance(self.module_type_gfk, str):
-			raise ValueError(f"'module_type_gfk' of incorrect type. Expected str, got {type(self.module_type_gfk)}")
-		if self.connected_mdl_bldg is not None and not isinstance(self.connected_mdl_bldg, str):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(self.connected_mdl_bldg)}")
-		if self.connected_mdl_room is not None and not isinstance(self.connected_mdl_room, str):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(self.connected_mdl_room)}")
-		if not isinstance(self.dest_connected_gfk, str):
-			raise ValueError(f"'dest_connected_gfk' of incorrect type. Expected str, got {type(self.dest_connected_gfk)}")
-		if not isinstance(self.connection_position, int):
-			raise ValueError(f"'connection_position' of incorrect type. Expected int, got {type(self.connection_position)}")
-		if self.connected_mdl_fq_name is not None and not isinstance(self.connected_mdl_fq_name, str):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(self.connected_mdl_fq_name)}")
-		if not isinstance(self.is_internal_connected, bool):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(self.is_internal_connected)}")
-		if not isinstance(self.connection_id_gfk_list, list):
-			raise ValueError(f"'connection_id_gfk_list' of incorrect type. Expected list, got {type(self.connection_id_gfk_list)}")
-		if not isinstance(self.internal_connected_gfk, str):
-			raise ValueError(f"'internal_connected_gfk' of incorrect type. Expected str, got {type(self.internal_connected_gfk)}")
-
-	@staticmethod
-	def bulk_connect_ta(mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> dict:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.bulk_connect', 'new': _denullify_dict({'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'name_stop': name_stop_new, 'name_start': name_start_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_ports': include_all_ports_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_connect(cls, api_session: APISession, mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, name_stop_new: str = None, name_start_new: str = None, include_all_ports_new: bool = False, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: str = None, connected_mdl_room_new: str = None, connected_name_start_new: str = None, connected_mdl_fq_name_new: str = None) -> list:
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if name_stop_new is not None and not (isinstance(name_stop_new, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_new)}")
-		if name_start_new is not None and not (isinstance(name_start_new, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_ports_new is not None and not (isinstance(include_all_ports_new, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if connected_name_start_new is not None and not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if connected_mdl_fq_name_new is not None and not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_connect_ta(mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, name_stop_new=name_stop_new, name_start_new=name_start_new, mdl_fq_name_new=mdl_fq_name_new, include_all_ports_new=include_all_ports_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_disconnect_ta(mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.bulk_disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_ports': include_all_ports_old, 'type_group_is_fix': type_group_is_fix_old, 'include_all_submdls': include_all_submdls_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_disconnect(cls, api_session: APISession, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, name_stop_old: str = None, name_start_old: str = None, include_all_ports_old: bool = False, type_group_is_fix_old: bool = None, include_all_submdls_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if name_stop_old is not None and not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if name_start_old is not None and not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_ports_old is not None and not (isinstance(include_all_ports_old, bool)):
-			raise ValueError(f"'include_all_ports' of incorrect type. Expected bool, got {type(include_all_ports_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_disconnect_ta(mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, include_all_ports_old=include_all_ports_old, type_group_is_fix_old=type_group_is_fix_old, include_all_submdls_old=include_all_submdls_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def bulk_move_connection_ta(connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> dict:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		return {'name': 'nd.p_port.bulk_move_connection', 'new': _denullify_dict({'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_name_start': connected_name_start_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'name_stop': name_stop_old, 'name_start': name_start_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_copy_pp_description': do_copy_pp_description_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def bulk_move_connection(cls, api_session: APISession, connected_name_start_new: str, connected_mdl_fq_name_new: str, name_stop_old: str, name_start_old: str, mdl_fq_name_old: str, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_copy_pp_description_old: bool = False) -> list:
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_name_start_new, str)):
-			raise ValueError(f"'connected_name_start' of incorrect type. Expected str, got {type(connected_name_start_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(name_stop_old, str)):
-			raise ValueError(f"'name_stop' of incorrect type. Expected str, got {type(name_stop_old)}")
-		if not (isinstance(name_start_old, str)):
-			raise ValueError(f"'name_start' of incorrect type. Expected str, got {type(name_start_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_copy_pp_description_old is not None and not (isinstance(do_copy_pp_description_old, bool)):
-			raise ValueError(f"'do_copy_pp_description' of incorrect type. Expected bool, got {type(do_copy_pp_description_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.bulk_move_connection_ta(connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_name_start_new=connected_name_start_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, name_stop_old=name_stop_old, name_start_old=name_start_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_copy_pp_description_old=do_copy_pp_description_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def connect_ta(name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		return {'name': 'nd.p_port.connect', 'new': _denullify_dict({'name': name_new, 'mdl_bldg': mdl_bldg_new, 'mdl_room': mdl_room_new, 'mdl_fq_name': mdl_fq_name_new, 'connected_name': connected_name_new, 'patch_cable_name': patch_cable_name_new, 'type_group_is_fix': type_group_is_fix_new, 'connected_mdl_bldg': connected_mdl_bldg_new, 'connected_mdl_room': connected_mdl_room_new, 'connected_mdl_fq_name': connected_mdl_fq_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def connect(cls, api_session: APISession, name_new: str, mdl_fq_name_new: str, connected_name_new: str, connected_mdl_fq_name_new: str, mdl_bldg_new: Union[str, ExplicitNull] = None, mdl_room_new: Union[str, ExplicitNull] = None, patch_cable_name_new: str = None, type_group_is_fix_new: bool = None, connected_mdl_bldg_new: Union[str, ExplicitNull] = None, connected_mdl_room_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if mdl_bldg_new is not None and not (isinstance(mdl_bldg_new, str) or isinstance(mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_new)}")
-		if mdl_room_new is not None and not (isinstance(mdl_room_new, str) or isinstance(mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(connected_name_new, str)):
-			raise ValueError(f"'connected_name' of incorrect type. Expected str, got {type(connected_name_new)}")
-		if patch_cable_name_new is not None and not (isinstance(patch_cable_name_new, str)):
-			raise ValueError(f"'patch_cable_name' of incorrect type. Expected str, got {type(patch_cable_name_new)}")
-		if type_group_is_fix_new is not None and not (isinstance(type_group_is_fix_new, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_new)}")
-		if connected_mdl_bldg_new is not None and not (isinstance(connected_mdl_bldg_new, str) or isinstance(connected_mdl_bldg_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_bldg' of incorrect type. Expected str, got {type(connected_mdl_bldg_new)}")
-		if connected_mdl_room_new is not None and not (isinstance(connected_mdl_room_new, str) or isinstance(connected_mdl_room_new, ExplicitNull)):
-			raise ValueError(f"'connected_mdl_room' of incorrect type. Expected str, got {type(connected_mdl_room_new)}")
-		if not (isinstance(connected_mdl_fq_name_new, str)):
-			raise ValueError(f"'connected_mdl_fq_name' of incorrect type. Expected str, got {type(connected_mdl_fq_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.connect_ta(name_new=name_new, mdl_bldg_new=mdl_bldg_new, mdl_room_new=mdl_room_new, mdl_fq_name_new=mdl_fq_name_new, connected_name_new=connected_name_new, patch_cable_name_new=patch_cable_name_new, type_group_is_fix_new=type_group_is_fix_new, connected_mdl_bldg_new=connected_mdl_bldg_new, connected_mdl_room_new=connected_mdl_room_new, connected_mdl_fq_name_new=connected_mdl_fq_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def disconnect_ta(name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		return {'name': 'nd.p_port.disconnect', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old, 'type_group_is_fix': type_group_is_fix_old, 'do_delete_patch_cable': do_delete_patch_cable_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def disconnect(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, mdl_bldg_old: str = None, mdl_room_old: str = None, type_group_is_fix_old: bool = False, do_delete_patch_cable_old: bool = False) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if type_group_is_fix_old is not None and not (isinstance(type_group_is_fix_old, bool)):
-			raise ValueError(f"'type_group_is_fix' of incorrect type. Expected bool, got {type(type_group_is_fix_old)}")
-		if do_delete_patch_cable_old is not None and not (isinstance(do_delete_patch_cable_old, bool)):
-			raise ValueError(f"'do_delete_patch_cable' of incorrect type. Expected bool, got {type(do_delete_patch_cable_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.disconnect_ta(name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old, type_group_is_fix_old=type_group_is_fix_old, do_delete_patch_cable_old=do_delete_patch_cable_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, gpk_list_old: list = None, protocol_old: str = None, name_list_old: list = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, mdl_bldg_list_old: list = None, mdl_room_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if mdl_bldg_list_old is not None and not (isinstance(mdl_bldg_list_old, list)):
-			raise ValueError(f"'mdl_bldg_list' of incorrect type. Expected list, got {type(mdl_bldg_list_old)}")
-		if mdl_room_list_old is not None and not (isinstance(mdl_room_list_old, list)):
-			raise ValueError(f"'mdl_room_list' of incorrect type. Expected list, got {type(mdl_room_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		return {'name': 'nd.p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'speed': speed_old, 'is_nnl': is_nnl_old, 'gpk_list': gpk_list_old, 'protocol': protocol_old, 'name_list': name_list_old, 'type_group': type_group_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'is_connected': is_connected_old, 'is_edge_node': is_edge_node_old, 'mdl_bldg_list': mdl_bldg_list_old, 'mdl_room_list': mdl_room_list_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_internal_connected': is_internal_connected_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, speed_old: str = None, is_nnl_old: bool = None, gpk_list_old: list = None, protocol_old: str = None, name_list_old: list = None, type_group_old: str = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, is_connected_old: bool = None, is_edge_node_old: bool = None, mdl_bldg_list_old: list = None, mdl_room_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_internal_connected_old: bool = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if speed_old is not None and not (isinstance(speed_old, str)):
-			raise ValueError(f"'speed' of incorrect type. Expected str, got {type(speed_old)}")
-		if is_nnl_old is not None and not (isinstance(is_nnl_old, bool)):
-			raise ValueError(f"'is_nnl' of incorrect type. Expected bool, got {type(is_nnl_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if protocol_old is not None and not (isinstance(protocol_old, str)):
-			raise ValueError(f"'protocol' of incorrect type. Expected str, got {type(protocol_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if type_group_old is not None and not (isinstance(type_group_old, str)):
-			raise ValueError(f"'type_group' of incorrect type. Expected str, got {type(type_group_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_connected_old is not None and not (isinstance(is_connected_old, bool)):
-			raise ValueError(f"'is_connected' of incorrect type. Expected bool, got {type(is_connected_old)}")
-		if is_edge_node_old is not None and not (isinstance(is_edge_node_old, bool)):
-			raise ValueError(f"'is_edge_node' of incorrect type. Expected bool, got {type(is_edge_node_old)}")
-		if mdl_bldg_list_old is not None and not (isinstance(mdl_bldg_list_old, list)):
-			raise ValueError(f"'mdl_bldg_list' of incorrect type. Expected list, got {type(mdl_bldg_list_old)}")
-		if mdl_room_list_old is not None and not (isinstance(mdl_room_list_old, list)):
-			raise ValueError(f"'mdl_room_list' of incorrect type. Expected list, got {type(mdl_room_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_internal_connected_old is not None and not (isinstance(is_internal_connected_old, bool)):
-			raise ValueError(f"'is_internal_connected' of incorrect type. Expected bool, got {type(is_internal_connected_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, speed_old=speed_old, is_nnl_old=is_nnl_old, gpk_list_old=gpk_list_old, protocol_old=protocol_old, name_list_old=name_list_old, type_group_old=type_group_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, is_connected_old=is_connected_old, is_edge_node_old=is_edge_node_old, mdl_bldg_list_old=mdl_bldg_list_old, mdl_room_list_old=mdl_room_list_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_internal_connected_old=is_internal_connected_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> dict:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		return {'name': 'nd.p_port.update', 'new': _denullify_dict({'description': description_new, 'is_defective': is_defective_new}), 'old': _denullify_dict({'name': name_old, 'mdl_bldg': mdl_bldg_old, 'mdl_room': mdl_room_old, 'mdl_fq_name': mdl_fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, mdl_fq_name_old: str, description_new: Union[str, ExplicitNull] = None, is_defective_new: bool = False, mdl_bldg_old: str = None, mdl_room_old: str = None) -> list:
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if is_defective_new is not None and not (isinstance(is_defective_new, bool)):
-			raise ValueError(f"'is_defective' of incorrect type. Expected bool, got {type(is_defective_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if mdl_bldg_old is not None and not (isinstance(mdl_bldg_old, str) or isinstance(mdl_bldg_old, ExplicitNull)):
-			raise ValueError(f"'mdl_bldg' of incorrect type. Expected str, got {type(mdl_bldg_old)}")
-		if mdl_room_old is not None and not (isinstance(mdl_room_old, str) or isinstance(mdl_room_old, ExplicitNull)):
-			raise ValueError(f"'mdl_room' of incorrect type. Expected str, got {type(mdl_room_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(description_new=description_new, is_defective_new=is_defective_new, name_old=name_old, mdl_bldg_old=mdl_bldg_old, mdl_room_old=mdl_room_old, mdl_fq_name_old=mdl_fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Site(APIObject):
-	gpk: str
-	name: str
-	type: str
-	fq_name: str
-	has_parent: bool
-	description: str
-	type_is_child: bool
-	parent_fq_name: str
-	type_force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.has_parent, bool):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(self.has_parent)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.type_is_child, bool):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(self.type_is_child)}")
-		if self.parent_fq_name is not None and not isinstance(self.parent_fq_name, str):
-			raise ValueError(f"'parent_fq_name' of incorrect type. Expected str, got {type(self.parent_fq_name)}")
-		if not isinstance(self.type_force_is_child, bool):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(self.type_force_is_child)}")
-
-	@staticmethod
-	def create_ta(type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.site.create', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, type_new: str, fq_name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fq_name_old: str) -> dict:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fq_name_old: str) -> list:
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, type_old: str = None, gpk_list_old: list = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, fq_name_list_old: list = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		return {'name': 'nd.site.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'type': type_old, 'gpk_list': gpk_list_old, 'has_parent': has_parent_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'fq_name_list': fq_name_list_old, 'type_is_child': type_is_child_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'type_force_is_child': type_force_is_child_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, type_old: str = None, gpk_list_old: list = None, has_parent_old: bool = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, fq_name_list_old: list = None, type_is_child_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, type_force_is_child_old: bool = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if has_parent_old is not None and not (isinstance(has_parent_old, bool)):
-			raise ValueError(f"'has_parent' of incorrect type. Expected bool, got {type(has_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if fq_name_list_old is not None and not (isinstance(fq_name_list_old, list)):
-			raise ValueError(f"'fq_name_list' of incorrect type. Expected list, got {type(fq_name_list_old)}")
-		if type_is_child_old is not None and not (isinstance(type_is_child_old, bool)):
-			raise ValueError(f"'type_is_child' of incorrect type. Expected bool, got {type(type_is_child_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if type_force_is_child_old is not None and not (isinstance(type_force_is_child_old, bool)):
-			raise ValueError(f"'type_force_is_child' of incorrect type. Expected bool, got {type(type_force_is_child_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, type_old=type_old, gpk_list_old=gpk_list_old, has_parent_old=has_parent_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, fq_name_list_old=fq_name_list_old, type_is_child_old=type_is_child_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, type_force_is_child_old=type_force_is_child_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		return {'name': 'nd.site.update', 'new': _denullify_dict({'type': type_new, 'fq_name': fq_name_new, 'description': description_new}), 'old': _denullify_dict({'fq_name': fq_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fq_name_old: str, type_new: str = None, fq_name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if fq_name_new is not None and not (isinstance(fq_name_new, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(fq_name_old, str)):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(fq_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(type_new=type_new, fq_name_new=fq_name_new, description_new=description_new, fq_name_old=fq_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Module2ap(APIObject):
-	gpk: str
-	bldg: str
-	room: str
-	ap_name: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.bldg, str):
-			raise ValueError(f"'bldg' of incorrect type. Expected str, got {type(self.bldg)}")
-		if not isinstance(self.room, str):
-			raise ValueError(f"'room' of incorrect type. Expected str, got {type(self.room)}")
-		if not isinstance(self.ap_name, str):
-			raise ValueError(f"'ap_name' of incorrect type. Expected str, got {type(self.ap_name)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, ap_name_list_old: list = None, fetch_offset_old: int = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2ap.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'ap_name_list': ap_name_list_old, 'fetch_offset': fetch_offset_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, ap_name_list_old: list = None, fetch_offset_old: int = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if ap_name_list_old is not None and not (isinstance(ap_name_list_old, list)):
-			raise ValueError(f"'ap_name_list' of incorrect type. Expected list, got {type(ap_name_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, ap_name_list_old=ap_name_list_old, fetch_offset_old=fetch_offset_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd(APIObject):
-	gpk: str
-	name: str
-	categ: str
-	is_own: bool
-	seclvl: int
-	description: str
-	dhcp_domain: str
-	dhcp_enabled: bool
-	dns_search_list: list
-	admin_description: str
-	dhcp_offer_rsv_time: str
-	dhcp_opt_t1_percent: int
-	dhcp_opt_t2_percent: int
-	dhcp_leasetime_static: str
-	dhcp_leasetime_dynamic: str
-	dhcp_ttl_value_percent: int
-	dhcp_dynamic_lease_removal_time: str
-	dhcp_new_leases_get_static_addr: bool
-	dhcp_new_leases_get_static_fqdn: bool
-	dhcp_new_leases_get_dynamic_addr: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.categ, str):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(self.categ)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.seclvl, int):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(self.seclvl)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.dhcp_domain is not None and not isinstance(self.dhcp_domain, str):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(self.dhcp_domain)}")
-		if not isinstance(self.dhcp_enabled, bool):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(self.dhcp_enabled)}")
-		if not isinstance(self.dns_search_list, list):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(self.dns_search_list)}")
-		if self.admin_description is not None and not isinstance(self.admin_description, str):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(self.admin_description)}")
-		if not isinstance(self.dhcp_offer_rsv_time, str):
-			raise ValueError(f"'dhcp_offer_rsv_time' of incorrect type. Expected str, got {type(self.dhcp_offer_rsv_time)}")
-		if not isinstance(self.dhcp_opt_t1_percent, int):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t1_percent)}")
-		if not isinstance(self.dhcp_opt_t2_percent, int):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(self.dhcp_opt_t2_percent)}")
-		if not isinstance(self.dhcp_leasetime_static, str):
-			raise ValueError(f"'dhcp_leasetime_static' of incorrect type. Expected str, got {type(self.dhcp_leasetime_static)}")
-		if not isinstance(self.dhcp_leasetime_dynamic, str):
-			raise ValueError(f"'dhcp_leasetime_dynamic' of incorrect type. Expected str, got {type(self.dhcp_leasetime_dynamic)}")
-		if not isinstance(self.dhcp_ttl_value_percent, int):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(self.dhcp_ttl_value_percent)}")
-		if not isinstance(self.dhcp_dynamic_lease_removal_time, str):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(self.dhcp_dynamic_lease_removal_time)}")
-		if not isinstance(self.dhcp_new_leases_get_static_addr, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_addr)}")
-		if not isinstance(self.dhcp_new_leases_get_static_fqdn, bool):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_static_fqdn)}")
-		if not isinstance(self.dhcp_new_leases_get_dynamic_addr, bool):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(self.dhcp_new_leases_get_dynamic_addr)}")
-
-	@staticmethod
-	def create_ta(name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_offer_rsv_time_new: str = '00:00:15', dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_leasetime_static_new: str = '06:00:00', dhcp_leasetime_dynamic_new: str = '02:00:00', dhcp_ttl_value_percent_new: int = 60, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False, dhcp_new_leases_get_dynamic_addr_new: bool = False) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_offer_rsv_time_new is not None and not (isinstance(dhcp_offer_rsv_time_new, str)):
-			raise ValueError(f"'dhcp_offer_rsv_time' of incorrect type. Expected str, got {type(dhcp_offer_rsv_time_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_leasetime_static_new is not None and not (isinstance(dhcp_leasetime_static_new, str)):
-			raise ValueError(f"'dhcp_leasetime_static' of incorrect type. Expected str, got {type(dhcp_leasetime_static_new)}")
-		if dhcp_leasetime_dynamic_new is not None and not (isinstance(dhcp_leasetime_dynamic_new, str)):
-			raise ValueError(f"'dhcp_leasetime_dynamic' of incorrect type. Expected str, got {type(dhcp_leasetime_dynamic_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-
-		return {'name': 'nd.bcd.create', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'dns_search_list': dns_search_list_new, 'admin_description': admin_description_new, 'dhcp_offer_rsv_time': dhcp_offer_rsv_time_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_leasetime_static': dhcp_leasetime_static_new, 'dhcp_leasetime_dynamic': dhcp_leasetime_dynamic_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, categ_new: str, seclvl_new: int, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = False, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_offer_rsv_time_new: str = '00:00:15', dhcp_opt_t1_percent_new: int = 50, dhcp_opt_t2_percent_new: int = 88, dhcp_leasetime_static_new: str = '06:00:00', dhcp_leasetime_dynamic_new: str = '02:00:00', dhcp_ttl_value_percent_new: int = 60, dhcp_dynamic_lease_removal_time_new: str = '1 day', dhcp_new_leases_get_static_addr_new: bool = True, dhcp_new_leases_get_static_fqdn_new: bool = False, dhcp_new_leases_get_dynamic_addr_new: bool = False) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_offer_rsv_time_new is not None and not (isinstance(dhcp_offer_rsv_time_new, str)):
-			raise ValueError(f"'dhcp_offer_rsv_time' of incorrect type. Expected str, got {type(dhcp_offer_rsv_time_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_leasetime_static_new is not None and not (isinstance(dhcp_leasetime_static_new, str)):
-			raise ValueError(f"'dhcp_leasetime_static' of incorrect type. Expected str, got {type(dhcp_leasetime_static_new)}")
-		if dhcp_leasetime_dynamic_new is not None and not (isinstance(dhcp_leasetime_dynamic_new, str)):
-			raise ValueError(f"'dhcp_leasetime_dynamic' of incorrect type. Expected str, got {type(dhcp_leasetime_dynamic_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, dns_search_list_new=dns_search_list_new, admin_description_new=admin_description_new, dhcp_offer_rsv_time_new=dhcp_offer_rsv_time_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_leasetime_static_new=dhcp_leasetime_static_new, dhcp_leasetime_dynamic_new=dhcp_leasetime_dynamic_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, dhcp_new_leases_get_dynamic_addr_new=dhcp_new_leases_get_dynamic_addr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None, dhcp_new_leases_get_dynamic_addr_old: bool = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-		if dhcp_new_leases_get_dynamic_addr_old is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_old)}")
-
-		return {'name': 'nd.bcd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'dhcp_enabled': dhcp_enabled_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_old, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_old, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, name_regexp_old: str = None, dhcp_enabled_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, dhcp_new_leases_get_static_addr_old: bool = None, dhcp_new_leases_get_static_fqdn_old: bool = None, dhcp_new_leases_get_dynamic_addr_old: bool = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if dhcp_enabled_old is not None and not (isinstance(dhcp_enabled_old, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if dhcp_new_leases_get_static_addr_old is not None and not (isinstance(dhcp_new_leases_get_static_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_old)}")
-		if dhcp_new_leases_get_static_fqdn_old is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_old)}")
-		if dhcp_new_leases_get_dynamic_addr_old is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_old, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, dhcp_enabled_old=dhcp_enabled_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, dhcp_new_leases_get_static_addr_old=dhcp_new_leases_get_static_addr_old, dhcp_new_leases_get_static_fqdn_old=dhcp_new_leases_get_static_fqdn_old, dhcp_new_leases_get_dynamic_addr_old=dhcp_new_leases_get_dynamic_addr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_offer_rsv_time_new: str = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_leasetime_static_new: str = None, dhcp_leasetime_dynamic_new: str = None, dhcp_ttl_value_percent_new: int = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None, dhcp_new_leases_get_dynamic_addr_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_offer_rsv_time_new is not None and not (isinstance(dhcp_offer_rsv_time_new, str)):
-			raise ValueError(f"'dhcp_offer_rsv_time' of incorrect type. Expected str, got {type(dhcp_offer_rsv_time_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_leasetime_static_new is not None and not (isinstance(dhcp_leasetime_static_new, str)):
-			raise ValueError(f"'dhcp_leasetime_static' of incorrect type. Expected str, got {type(dhcp_leasetime_static_new)}")
-		if dhcp_leasetime_dynamic_new is not None and not (isinstance(dhcp_leasetime_dynamic_new, str)):
-			raise ValueError(f"'dhcp_leasetime_dynamic' of incorrect type. Expected str, got {type(dhcp_leasetime_dynamic_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'nd.bcd.update', 'new': _denullify_dict({'name': name_new, 'categ': categ_new, 'seclvl': seclvl_new, 'description': description_new, 'dhcp_domain': dhcp_domain_new, 'dhcp_enabled': dhcp_enabled_new, 'dns_search_list': dns_search_list_new, 'admin_description': admin_description_new, 'dhcp_offer_rsv_time': dhcp_offer_rsv_time_new, 'dhcp_opt_t1_percent': dhcp_opt_t1_percent_new, 'dhcp_opt_t2_percent': dhcp_opt_t2_percent_new, 'dhcp_leasetime_static': dhcp_leasetime_static_new, 'dhcp_leasetime_dynamic': dhcp_leasetime_dynamic_new, 'dhcp_ttl_value_percent': dhcp_ttl_value_percent_new, 'dhcp_dynamic_lease_removal_time': dhcp_dynamic_lease_removal_time_new, 'dhcp_new_leases_get_static_addr': dhcp_new_leases_get_static_addr_new, 'dhcp_new_leases_get_static_fqdn': dhcp_new_leases_get_static_fqdn_new, 'dhcp_new_leases_get_dynamic_addr': dhcp_new_leases_get_dynamic_addr_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, categ_new: str = None, seclvl_new: int = None, description_new: Union[str, ExplicitNull] = None, dhcp_domain_new: Union[str, ExplicitNull] = None, dhcp_enabled_new: bool = None, dns_search_list_new: list = None, admin_description_new: Union[str, ExplicitNull] = None, dhcp_offer_rsv_time_new: str = None, dhcp_opt_t1_percent_new: int = None, dhcp_opt_t2_percent_new: int = None, dhcp_leasetime_static_new: str = None, dhcp_leasetime_dynamic_new: str = None, dhcp_ttl_value_percent_new: int = None, dhcp_dynamic_lease_removal_time_new: str = None, dhcp_new_leases_get_static_addr_new: bool = None, dhcp_new_leases_get_static_fqdn_new: bool = None, dhcp_new_leases_get_dynamic_addr_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if categ_new is not None and not (isinstance(categ_new, str)):
-			raise ValueError(f"'categ' of incorrect type. Expected str, got {type(categ_new)}")
-		if seclvl_new is not None and not (isinstance(seclvl_new, int)):
-			raise ValueError(f"'seclvl' of incorrect type. Expected int, got {type(seclvl_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if dhcp_domain_new is not None and not (isinstance(dhcp_domain_new, str) or isinstance(dhcp_domain_new, ExplicitNull)):
-			raise ValueError(f"'dhcp_domain' of incorrect type. Expected str, got {type(dhcp_domain_new)}")
-		if dhcp_enabled_new is not None and not (isinstance(dhcp_enabled_new, bool)):
-			raise ValueError(f"'dhcp_enabled' of incorrect type. Expected bool, got {type(dhcp_enabled_new)}")
-		if dns_search_list_new is not None and not (isinstance(dns_search_list_new, list)):
-			raise ValueError(f"'dns_search_list' of incorrect type. Expected list, got {type(dns_search_list_new)}")
-		if admin_description_new is not None and not (isinstance(admin_description_new, str) or isinstance(admin_description_new, ExplicitNull)):
-			raise ValueError(f"'admin_description' of incorrect type. Expected str, got {type(admin_description_new)}")
-		if dhcp_offer_rsv_time_new is not None and not (isinstance(dhcp_offer_rsv_time_new, str)):
-			raise ValueError(f"'dhcp_offer_rsv_time' of incorrect type. Expected str, got {type(dhcp_offer_rsv_time_new)}")
-		if dhcp_opt_t1_percent_new is not None and not (isinstance(dhcp_opt_t1_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t1_percent' of incorrect type. Expected int, got {type(dhcp_opt_t1_percent_new)}")
-		if dhcp_opt_t2_percent_new is not None and not (isinstance(dhcp_opt_t2_percent_new, int)):
-			raise ValueError(f"'dhcp_opt_t2_percent' of incorrect type. Expected int, got {type(dhcp_opt_t2_percent_new)}")
-		if dhcp_leasetime_static_new is not None and not (isinstance(dhcp_leasetime_static_new, str)):
-			raise ValueError(f"'dhcp_leasetime_static' of incorrect type. Expected str, got {type(dhcp_leasetime_static_new)}")
-		if dhcp_leasetime_dynamic_new is not None and not (isinstance(dhcp_leasetime_dynamic_new, str)):
-			raise ValueError(f"'dhcp_leasetime_dynamic' of incorrect type. Expected str, got {type(dhcp_leasetime_dynamic_new)}")
-		if dhcp_ttl_value_percent_new is not None and not (isinstance(dhcp_ttl_value_percent_new, int)):
-			raise ValueError(f"'dhcp_ttl_value_percent' of incorrect type. Expected int, got {type(dhcp_ttl_value_percent_new)}")
-		if dhcp_dynamic_lease_removal_time_new is not None and not (isinstance(dhcp_dynamic_lease_removal_time_new, str)):
-			raise ValueError(f"'dhcp_dynamic_lease_removal_time' of incorrect type. Expected str, got {type(dhcp_dynamic_lease_removal_time_new)}")
-		if dhcp_new_leases_get_static_addr_new is not None and not (isinstance(dhcp_new_leases_get_static_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_addr_new)}")
-		if dhcp_new_leases_get_static_fqdn_new is not None and not (isinstance(dhcp_new_leases_get_static_fqdn_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_static_fqdn' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_static_fqdn_new)}")
-		if dhcp_new_leases_get_dynamic_addr_new is not None and not (isinstance(dhcp_new_leases_get_dynamic_addr_new, bool)):
-			raise ValueError(f"'dhcp_new_leases_get_dynamic_addr' of incorrect type. Expected bool, got {type(dhcp_new_leases_get_dynamic_addr_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, categ_new=categ_new, seclvl_new=seclvl_new, description_new=description_new, dhcp_domain_new=dhcp_domain_new, dhcp_enabled_new=dhcp_enabled_new, dns_search_list_new=dns_search_list_new, admin_description_new=admin_description_new, dhcp_offer_rsv_time_new=dhcp_offer_rsv_time_new, dhcp_opt_t1_percent_new=dhcp_opt_t1_percent_new, dhcp_opt_t2_percent_new=dhcp_opt_t2_percent_new, dhcp_leasetime_static_new=dhcp_leasetime_static_new, dhcp_leasetime_dynamic_new=dhcp_leasetime_dynamic_new, dhcp_ttl_value_percent_new=dhcp_ttl_value_percent_new, dhcp_dynamic_lease_removal_time_new=dhcp_dynamic_lease_removal_time_new, dhcp_new_leases_get_static_addr_new=dhcp_new_leases_get_static_addr_new, dhcp_new_leases_get_static_fqdn_new=dhcp_new_leases_get_static_fqdn_new, dhcp_new_leases_get_dynamic_addr_new=dhcp_new_leases_get_dynamic_addr_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Device(APIObject):
-	nc: str
-	acg: str
-	gpk: str
-	fqdn: str
-	type: str
-	is_valid: bool
-	sysdescr: str
-	uses_vlans: bool
-	description: str
-	assigned_parser: str
-	executable_parser: str
-
-	def __post_init__(self):
-		if not isinstance(self.nc, str):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(self.nc)}")
-		if not isinstance(self.acg, str):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(self.acg)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.fqdn, str):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(self.fqdn)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if not isinstance(self.is_valid, bool):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(self.is_valid)}")
-		if self.sysdescr is not None and not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.uses_vlans, bool):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(self.uses_vlans)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.assigned_parser, str):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(self.assigned_parser)}")
-		if not isinstance(self.executable_parser, str):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(self.executable_parser)}")
-
-	@staticmethod
-	def create_ta(nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.create', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, nc_new: str, acg_new: str, fqdn_new: str, type_new: str, assigned_parser_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(fqdn_old: str) -> dict:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, fqdn_old: str) -> list:
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def imp_ta(fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		return {'name': 'nd.device.imp', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'sysdescr': sysdescr_new, 'do_import': do_import_new, 'description': description_new, 'import_data': import_data_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def imp(cls, api_session: APISession, fqdn_new: str, nc_new: str = None, acg_new: str = None, type_new: str = None, sysdescr_new: Union[str, ExplicitNull] = None, do_import_new: bool = True, description_new: Union[str, ExplicitNull] = None, import_data_new: dict = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str) or isinstance(sysdescr_new, ExplicitNull)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if import_data_new is not None and not (isinstance(import_data_new, dict)):
-			raise ValueError(f"'import_data' of incorrect type. Expected dict, got {type(import_data_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.imp_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, sysdescr_new=sysdescr_new, do_import_new=do_import_new, description_new=description_new, import_data_new=import_data_new, assigned_parser_new=assigned_parser_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(nc_old: str = None, acg_old: str = None, type_old: str = None, gpk_list_old: list = None, is_valid_old: bool = None, fqdn_list_old: list = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'nc': nc_old, 'acg': acg_old, 'type': type_old, 'gpk_list': gpk_list_old, 'is_valid': is_valid_old, 'fqdn_list': fqdn_list_old, 'uses_vlans': uses_vlans_old, 'fetch_limit': fetch_limit_old, 'fqdn_regexp': fqdn_regexp_old, 'fetch_offset': fetch_offset_old, 'assigned_parser': assigned_parser_old, 'executable_parser': executable_parser_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, nc_old: str = None, acg_old: str = None, type_old: str = None, gpk_list_old: list = None, is_valid_old: bool = None, fqdn_list_old: list = None, uses_vlans_old: bool = None, fetch_limit_old: int = None, fqdn_regexp_old: str = None, fetch_offset_old: int = None, assigned_parser_old: str = None, executable_parser_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if nc_old is not None and not (isinstance(nc_old, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_old)}")
-		if acg_old is not None and not (isinstance(acg_old, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_old)}")
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_valid_old is not None and not (isinstance(is_valid_old, bool)):
-			raise ValueError(f"'is_valid' of incorrect type. Expected bool, got {type(is_valid_old)}")
-		if fqdn_list_old is not None and not (isinstance(fqdn_list_old, list)):
-			raise ValueError(f"'fqdn_list' of incorrect type. Expected list, got {type(fqdn_list_old)}")
-		if uses_vlans_old is not None and not (isinstance(uses_vlans_old, bool)):
-			raise ValueError(f"'uses_vlans' of incorrect type. Expected bool, got {type(uses_vlans_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fqdn_regexp_old is not None and not (isinstance(fqdn_regexp_old, str)):
-			raise ValueError(f"'fqdn_regexp' of incorrect type. Expected str, got {type(fqdn_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if assigned_parser_old is not None and not (isinstance(assigned_parser_old, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_old)}")
-		if executable_parser_old is not None and not (isinstance(executable_parser_old, str)):
-			raise ValueError(f"'executable_parser' of incorrect type. Expected str, got {type(executable_parser_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(nc_old=nc_old, acg_old=acg_old, type_old=type_old, gpk_list_old=gpk_list_old, is_valid_old=is_valid_old, fqdn_list_old=fqdn_list_old, uses_vlans_old=uses_vlans_old, fetch_limit_old=fetch_limit_old, fqdn_regexp_old=fqdn_regexp_old, fetch_offset_old=fetch_offset_old, assigned_parser_old=assigned_parser_old, executable_parser_old=executable_parser_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> dict:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		return {'name': 'nd.device.update', 'new': _denullify_dict({'nc': nc_new, 'acg': acg_new, 'fqdn': fqdn_new, 'type': type_new, 'description': description_new, 'assigned_parser': assigned_parser_new}), 'old': _denullify_dict({'fqdn': fqdn_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, fqdn_old: str, nc_new: str = None, acg_new: str = None, fqdn_new: str = None, type_new: str = None, description_new: Union[str, ExplicitNull] = None, assigned_parser_new: str = None) -> list:
-		if nc_new is not None and not (isinstance(nc_new, str)):
-			raise ValueError(f"'nc' of incorrect type. Expected str, got {type(nc_new)}")
-		if acg_new is not None and not (isinstance(acg_new, str)):
-			raise ValueError(f"'acg' of incorrect type. Expected str, got {type(acg_new)}")
-		if fqdn_new is not None and not (isinstance(fqdn_new, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if assigned_parser_new is not None and not (isinstance(assigned_parser_new, str)):
-			raise ValueError(f"'assigned_parser' of incorrect type. Expected str, got {type(assigned_parser_new)}")
-		if not (isinstance(fqdn_old, str)):
-			raise ValueError(f"'fqdn' of incorrect type. Expected str, got {type(fqdn_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(nc_new=nc_new, acg_new=acg_new, fqdn_new=fqdn_new, type_new=type_new, description_new=description_new, assigned_parser_new=assigned_parser_new, fqdn_old=fqdn_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpIntf(APIObject):
-	gpk: str
-	l_port: str
-	ip_addr: str
-	is_vrrp: bool
-	dev_fqdn: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port, str):
-			raise ValueError(f"'l_port' of incorrect type. Expected str, got {type(self.l_port)}")
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-	@staticmethod
-	def list_ta(is_vrrp_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, l_port_list_old: list = None, fetch_offset_old: int = None, ip_addr_list_old: list = None, is_secondary_old: bool = None, dev_fqdn_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if l_port_list_old is not None and not (isinstance(l_port_list_old, list)):
-			raise ValueError(f"'l_port_list' of incorrect type. Expected list, got {type(l_port_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_addr_list_old is not None and not (isinstance(ip_addr_list_old, list)):
-			raise ValueError(f"'ip_addr_list' of incorrect type. Expected list, got {type(ip_addr_list_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_intf.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_vrrp': is_vrrp_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'l_port_list': l_port_list_old, 'fetch_offset': fetch_offset_old, 'ip_addr_list': ip_addr_list_old, 'is_secondary': is_secondary_old, 'dev_fqdn_list': dev_fqdn_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_vrrp_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, l_port_list_old: list = None, fetch_offset_old: int = None, ip_addr_list_old: list = None, is_secondary_old: bool = None, dev_fqdn_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_vrrp_old is not None and not (isinstance(is_vrrp_old, bool)):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(is_vrrp_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if l_port_list_old is not None and not (isinstance(l_port_list_old, list)):
-			raise ValueError(f"'l_port_list' of incorrect type. Expected list, got {type(l_port_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if ip_addr_list_old is not None and not (isinstance(ip_addr_list_old, list)):
-			raise ValueError(f"'ip_addr_list' of incorrect type. Expected list, got {type(ip_addr_list_old)}")
-		if is_secondary_old is not None and not (isinstance(is_secondary_old, bool)):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(is_secondary_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_vrrp_old=is_vrrp_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, l_port_list_old=l_port_list_old, fetch_offset_old=fetch_offset_old, ip_addr_list_old=ip_addr_list_old, is_secondary_old=is_secondary_old, dev_fqdn_list_old=dev_fqdn_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class IpRoute(APIObject):
-	gpk: str
-	cidr: str
-	is_own: bool
-	metric: int
-	dev_fqdn: str
-	dest_l_port: str
-	dest_ip_addr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.cidr, str):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(self.cidr)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if self.dest_l_port is not None and not isinstance(self.dest_l_port, str):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(self.dest_l_port)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-
-	@staticmethod
-	def list_ta(cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str) or isinstance(dest_ip_addr_cidr_old, ExplicitNull)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_route.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'cidr': cidr_old, 'is_own': is_own_old, 'dev_fqdn': dev_fqdn_old, 'gpk_list': gpk_list_old, 'dest_l_port': dest_l_port_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dest_ip_addr_cidr': dest_ip_addr_cidr_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, cidr_old: str = None, is_own_old: bool = None, dev_fqdn_old: str = None, gpk_list_old: list = None, dest_l_port_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dest_ip_addr_cidr_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if cidr_old is not None and not (isinstance(cidr_old, str)):
-			raise ValueError(f"'cidr' of incorrect type. Expected str, got {type(cidr_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if dev_fqdn_old is not None and not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if dest_l_port_old is not None and not (isinstance(dest_l_port_old, str) or isinstance(dest_l_port_old, ExplicitNull)):
-			raise ValueError(f"'dest_l_port' of incorrect type. Expected str, got {type(dest_l_port_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dest_ip_addr_cidr_old is not None and not (isinstance(dest_ip_addr_cidr_old, str) or isinstance(dest_ip_addr_cidr_old, ExplicitNull)):
-			raise ValueError(f"'dest_ip_addr_cidr' of incorrect type. Expected str, got {type(dest_ip_addr_cidr_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(cidr_old=cidr_old, is_own_old=is_own_old, dev_fqdn_old=dev_fqdn_old, gpk_list_old=gpk_list_old, dest_l_port_old=dest_l_port_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dest_ip_addr_cidr_old=dest_ip_addr_cidr_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPort(APIObject):
-	gpk: str
-	lag: int
-	name: str
-	level: int
-	dev_fqdn: str
-	priority: int
-	tag_list: list
-	adm_state: int
-	description: str
-	name_sortby: str
-	ingress_vlan_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.priority, int):
-			raise ValueError(f"'priority' of incorrect type. Expected int, got {type(self.priority)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if not isinstance(self.adm_state, int):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(self.adm_state)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.name_sortby, str):
-			raise ValueError(f"'name_sortby' of incorrect type. Expected str, got {type(self.name_sortby)}")
-		if self.ingress_vlan_gfk is not None and not isinstance(self.ingress_vlan_gfk, str):
-			raise ValueError(f"'ingress_vlan_gfk' of incorrect type. Expected str, got {type(self.ingress_vlan_gfk)}")
-
-	@staticmethod
-	def list_ta(level_old: int = None, gpk_list_old: list = None, tag_list_old: list = None, adm_state_old: int = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'level': level_old, 'gpk_list': gpk_list_old, 'tag_list': tag_list_old, 'adm_state': adm_state_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'has_ingress_vlan': has_ingress_vlan_old, 'tag_list_operator': tag_list_operator_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, level_old: int = None, gpk_list_old: list = None, tag_list_old: list = None, adm_state_old: int = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, has_ingress_vlan_old: bool = None, tag_list_operator_old: str = 'eq', filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if level_old is not None and not (isinstance(level_old, int)):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(level_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tag_list_old is not None and not (isinstance(tag_list_old, list)):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(tag_list_old)}")
-		if adm_state_old is not None and not (isinstance(adm_state_old, int)):
-			raise ValueError(f"'adm_state' of incorrect type. Expected int, got {type(adm_state_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if has_ingress_vlan_old is not None and not (isinstance(has_ingress_vlan_old, bool)):
-			raise ValueError(f"'has_ingress_vlan' of incorrect type. Expected bool, got {type(has_ingress_vlan_old)}")
-		if tag_list_operator_old is not None and not (isinstance(tag_list_operator_old, str)):
-			raise ValueError(f"'tag_list_operator' of incorrect type. Expected str, got {type(tag_list_operator_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(level_old=level_old, gpk_list_old=gpk_list_old, tag_list_old=tag_list_old, adm_state_old=adm_state_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, has_ingress_vlan_old=has_ingress_vlan_old, tag_list_operator_old=tag_list_operator_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan(APIObject):
-	id: int
-	bcd: str
-	gpk: str
-	name: str
-	net_instnc: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vlan.create', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, name_new: str, net_instnc_new: str, id_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(bcd_old: str = None, name_old: str = None, id_list_old: list = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd': bcd_old, 'name': name_old, 'id_list': id_list_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'net_instnc_list': net_instnc_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, bcd_old: str = None, name_old: str = None, id_list_old: list = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if bcd_old is not None and not (isinstance(bcd_old, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_old)}")
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if id_list_old is not None and not (isinstance(id_list_old, list)):
-			raise ValueError(f"'id_list' of incorrect type. Expected list, got {type(id_list_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(bcd_old=bcd_old, name_old=name_old, id_list_old=id_list_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, net_instnc_list_old=net_instnc_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.vlan.update', 'new': _denullify_dict({'id': id_new, 'bcd': bcd_new, 'name': name_new, 'net_instnc': net_instnc_new, 'description': description_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, id_new: int = None, bcd_new: str = None, name_new: str = None, net_instnc_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if id_new is not None and not (isinstance(id_new, int)):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(id_new)}")
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(id_new=id_new, bcd_new=bcd_new, name_new=name_new, net_instnc_new=net_instnc_new, description_new=description_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class L2pPort(APIObject):
-	gpk: str
-	l_port_gfk: str
-	p_port_gfk: str
-	port_order: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.l_port_gfk, str):
-			raise ValueError(f"'l_port_gfk' of incorrect type. Expected str, got {type(self.l_port_gfk)}")
-		if not isinstance(self.p_port_gfk, str):
-			raise ValueError(f"'p_port_gfk' of incorrect type. Expected str, got {type(self.p_port_gfk)}")
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, l_port_gfk_list_old: list = None, p_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if p_port_gfk_list_old is not None and not (isinstance(p_port_gfk_list_old, list)):
-			raise ValueError(f"'p_port_gfk_list' of incorrect type. Expected list, got {type(p_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.l2p_port.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'l_port_gfk_list': l_port_gfk_list_old, 'p_port_gfk_list': p_port_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, l_port_gfk_list_old: list = None, p_port_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if l_port_gfk_list_old is not None and not (isinstance(l_port_gfk_list_old, list)):
-			raise ValueError(f"'l_port_gfk_list' of incorrect type. Expected list, got {type(l_port_gfk_list_old)}")
-		if p_port_gfk_list_old is not None and not (isinstance(p_port_gfk_list_old, list)):
-			raise ValueError(f"'p_port_gfk_list' of incorrect type. Expected list, got {type(p_port_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, l_port_gfk_list_old=l_port_gfk_list_old, p_port_gfk_list_old=p_port_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceAttributeImp(APIObject):
-	value: str
-	key_word: str
-
-	def __post_init__(self):
-		if self.value is not None and not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.key_word, str):
-			raise ValueError(f"'key_word' of incorrect type. Expected str, got {type(self.key_word)}")
-
-@dataclass()
-class IpIntfImp(APIObject):
-	ip_addr: str
-	is_vrrp: bool
-	vrrp_id: int
-	l_port_name: str
-	is_secondary: bool
-
-	def __post_init__(self):
-		if not isinstance(self.ip_addr, str):
-			raise ValueError(f"'ip_addr' of incorrect type. Expected str, got {type(self.ip_addr)}")
-		if not isinstance(self.is_vrrp, bool):
-			raise ValueError(f"'is_vrrp' of incorrect type. Expected bool, got {type(self.is_vrrp)}")
-		if self.vrrp_id is not None and not isinstance(self.vrrp_id, int):
-			raise ValueError(f"'vrrp_id' of incorrect type. Expected int, got {type(self.vrrp_id)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.is_secondary, bool):
-			raise ValueError(f"'is_secondary' of incorrect type. Expected bool, got {type(self.is_secondary)}")
-
-@dataclass()
-class IpRouteImp(APIObject):
-	net: str
-	metric: int
-	is_routable: bool
-	dest_ip_addr: str
-	dest_l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.net, str):
-			raise ValueError(f"'net' of incorrect type. Expected str, got {type(self.net)}")
-		if not isinstance(self.metric, int):
-			raise ValueError(f"'metric' of incorrect type. Expected int, got {type(self.metric)}")
-		if not isinstance(self.is_routable, bool):
-			raise ValueError(f"'is_routable' of incorrect type. Expected bool, got {type(self.is_routable)}")
-		if self.dest_ip_addr is not None and not isinstance(self.dest_ip_addr, str):
-			raise ValueError(f"'dest_ip_addr' of incorrect type. Expected str, got {type(self.dest_ip_addr)}")
-		if self.dest_l_port_name is not None and not isinstance(self.dest_l_port_name, str):
-			raise ValueError(f"'dest_l_port_name' of incorrect type. Expected str, got {type(self.dest_l_port_name)}")
-
-@dataclass()
-class L2pPortImp(APIObject):
-	port_order: int
-	l_port_name: str
-	p_port_name: str
-	fq_module_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.port_order, int):
-			raise ValueError(f"'port_order' of incorrect type. Expected int, got {type(self.port_order)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-		if not isinstance(self.p_port_name, str):
-			raise ValueError(f"'p_port_name' of incorrect type. Expected str, got {type(self.p_port_name)}")
-		if self.fq_module_name is not None and not isinstance(self.fq_module_name, str):
-			raise ValueError(f"'fq_module_name' of incorrect type. Expected str, got {type(self.fq_module_name)}")
-
-@dataclass()
-class LPortImp(APIObject):
-	lag: int
-	name: str
-	prio: int
-	status: int
-	tag_list: list
-	port_level: int
-	description: str
-	vlan_id_ingress: int
-
-	def __post_init__(self):
-		if self.lag is not None and not isinstance(self.lag, int):
-			raise ValueError(f"'lag' of incorrect type. Expected int, got {type(self.lag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.prio is not None and not isinstance(self.prio, int):
-			raise ValueError(f"'prio' of incorrect type. Expected int, got {type(self.prio)}")
-		if self.status is not None and not isinstance(self.status, int):
-			raise ValueError(f"'status' of incorrect type. Expected int, got {type(self.status)}")
-		if self.tag_list is not None and not isinstance(self.tag_list, list):
-			raise ValueError(f"'tag_list' of incorrect type. Expected list, got {type(self.tag_list)}")
-		if self.port_level is not None and not isinstance(self.port_level, int):
-			raise ValueError(f"'port_level' of incorrect type. Expected int, got {type(self.port_level)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if self.vlan_id_ingress is not None and not isinstance(self.vlan_id_ingress, int):
-			raise ValueError(f"'vlan_id_ingress' of incorrect type. Expected int, got {type(self.vlan_id_ingress)}")
-
-@dataclass()
-class VlanEgressImp(APIObject):
-	id: int
-	is_tagged: bool
-	l_port_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if not isinstance(self.is_tagged, bool):
-			raise ValueError(f"'is_tagged' of incorrect type. Expected bool, got {type(self.is_tagged)}")
-		if not isinstance(self.l_port_name, str):
-			raise ValueError(f"'l_port_name' of incorrect type. Expected str, got {type(self.l_port_name)}")
-
-@dataclass()
-class VlanImp(APIObject):
-	id: int
-	name: str
-	vxlan_vni: int
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.id, int):
-			raise ValueError(f"'id' of incorrect type. Expected int, got {type(self.id)}")
-		if self.name is not None and not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.vxlan_vni is not None and not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-		if self.net_instnc is not None and not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-@dataclass()
-class Module2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	mdl_fq_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.mdl_fq_name, str):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(self.mdl_fq_name)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		return {'name': 'nd.module2device.create', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new, 'include_all_submdls': include_all_submdls_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, mdl_fq_name_new: str, include_all_submdls_new: bool = True) -> list:
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if include_all_submdls_new is not None and not (isinstance(include_all_submdls_new, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, include_all_submdls_new=include_all_submdls_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, include_all_submdls_old: bool = True) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.module2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'mdl_fq_name_list': mdl_fq_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, mdl_fq_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if mdl_fq_name_list_old is not None and not (isinstance(mdl_fq_name_list_old, list)):
-			raise ValueError(f"'mdl_fq_name_list' of incorrect type. Expected list, got {type(mdl_fq_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, mdl_fq_name_list_old=mdl_fq_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> dict:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		return {'name': 'nd.module2device.update', 'new': _denullify_dict({'dev_fqdn': dev_fqdn_new, 'mdl_fq_name': mdl_fq_name_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'mdl_fq_name': mdl_fq_name_old, 'include_all_submdls': include_all_submdls_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, mdl_fq_name_old: str, dev_fqdn_new: str = None, mdl_fq_name_new: str = None, include_all_submdls_old: bool = True) -> list:
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if mdl_fq_name_new is not None and not (isinstance(mdl_fq_name_new, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(mdl_fq_name_old, str)):
-			raise ValueError(f"'mdl_fq_name' of incorrect type. Expected str, got {type(mdl_fq_name_old)}")
-		if include_all_submdls_old is not None and not (isinstance(include_all_submdls_old, bool)):
-			raise ValueError(f"'include_all_submdls' of incorrect type. Expected bool, got {type(include_all_submdls_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_fqdn_new=dev_fqdn_new, mdl_fq_name_new=mdl_fq_name_new, dev_fqdn_old=dev_fqdn_old, mdl_fq_name_old=mdl_fq_name_old, include_all_submdls_old=include_all_submdls_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTa(APIObject):
-	gpk: str
-	owner: str
-	is_own: bool
-	position: int
-	is_active: bool
-	is_working: bool
-	parent_gfk: str
-	mail_on_error: bool
-	last_devimp_ts: str
-	last_devimp_msg: str
-	mail_on_success: bool
-	preserve_on_error: bool
-	last_devimp_success: bool
-	preserve_on_success: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.owner, str):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(self.owner)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if self.position is not None and not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_working, bool):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(self.is_working)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.mail_on_error, bool):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(self.mail_on_error)}")
-		if self.last_devimp_ts is not None and not isinstance(self.last_devimp_ts, str):
-			raise ValueError(f"'last_devimp_ts' of incorrect type. Expected str, got {type(self.last_devimp_ts)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if not isinstance(self.mail_on_success, bool):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(self.mail_on_success)}")
-		if not isinstance(self.preserve_on_error, bool):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(self.preserve_on_error)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.preserve_on_success, bool):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(self.preserve_on_success)}")
-
-	@staticmethod
-	def create_ta(is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		return {'name': 'nd.diq_ta.create', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_active_new: bool = False, do_set_top_new: bool = False, parent_gfk_new: str = None, mail_on_error_new: bool = False, mail_on_success_new: bool = False, preserve_on_error_new: bool = True, preserve_on_success_new: bool = False) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(owner_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'owner': owner_old, 'is_own': is_own_old, 'gpk_list': gpk_list_old, 'position': position_old, 'is_active': is_active_old, 'is_working': is_working_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, owner_old: str = None, is_own_old: bool = None, gpk_list_old: list = None, position_old: int = None, is_active_old: bool = None, is_working_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if owner_old is not None and not (isinstance(owner_old, str)):
-			raise ValueError(f"'owner' of incorrect type. Expected str, got {type(owner_old)}")
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if position_old is not None and not (isinstance(position_old, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_working_old is not None and not (isinstance(is_working_old, bool)):
-			raise ValueError(f"'is_working' of incorrect type. Expected bool, got {type(is_working_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(owner_old=owner_old, is_own_old=is_own_old, gpk_list_old=gpk_list_old, position_old=position_old, is_active_old=is_active_old, is_working_old=is_working_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> dict:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'nd.diq_ta.update', 'new': _denullify_dict({'is_active': is_active_new, 'do_set_top': do_set_top_new, 'parent_gfk': parent_gfk_new, 'mail_on_error': mail_on_error_new, 'mail_on_success': mail_on_success_new, 'preserve_on_error': preserve_on_error_new, 'preserve_on_success': preserve_on_success_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, is_active_new: bool = None, do_set_top_new: bool = None, parent_gfk_new: str = None, mail_on_error_new: bool = None, mail_on_success_new: bool = None, preserve_on_error_new: bool = None, preserve_on_success_new: bool = None) -> list:
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if do_set_top_new is not None and not (isinstance(do_set_top_new, bool)):
-			raise ValueError(f"'do_set_top' of incorrect type. Expected bool, got {type(do_set_top_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if mail_on_error_new is not None and not (isinstance(mail_on_error_new, bool)):
-			raise ValueError(f"'mail_on_error' of incorrect type. Expected bool, got {type(mail_on_error_new)}")
-		if mail_on_success_new is not None and not (isinstance(mail_on_success_new, bool)):
-			raise ValueError(f"'mail_on_success' of incorrect type. Expected bool, got {type(mail_on_success_new)}")
-		if preserve_on_error_new is not None and not (isinstance(preserve_on_error_new, bool)):
-			raise ValueError(f"'preserve_on_error' of incorrect type. Expected bool, got {type(preserve_on_error_new)}")
-		if preserve_on_success_new is not None and not (isinstance(preserve_on_success_new, bool)):
-			raise ValueError(f"'preserve_on_success' of incorrect type. Expected bool, got {type(preserve_on_success_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_active_new=is_active_new, do_set_top_new=do_set_top_new, parent_gfk_new=parent_gfk_new, mail_on_error_new=mail_on_error_new, mail_on_success_new=mail_on_success_new, preserve_on_error_new=preserve_on_error_new, preserve_on_success_new=preserve_on_success_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DiqTaEntry(APIObject):
-	gpk: str
-	dev_nc: str
-	dev_acg: str
-	do_save: bool
-	dev_fqdn: str
-	dev_type: str
-	do_parse: bool
-	do_import: bool
-	dev_parser: str
-	diq_ta_gfk: str
-	diq_ta_is_own: bool
-	dev_description: str
-	last_devimp_msg: str
-	upload_filename: str
-	output_verbosity: bool
-	dev_attributes_dict: dict
-	last_devimp_success: bool
-	rplc_charset_errors: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_nc, str):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(self.dev_nc)}")
-		if not isinstance(self.dev_acg, str):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(self.dev_acg)}")
-		if not isinstance(self.do_save, bool):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(self.do_save)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.dev_type, str):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(self.dev_type)}")
-		if not isinstance(self.do_parse, bool):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(self.do_parse)}")
-		if not isinstance(self.do_import, bool):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(self.do_import)}")
-		if not isinstance(self.dev_parser, str):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(self.dev_parser)}")
-		if not isinstance(self.diq_ta_gfk, str):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(self.diq_ta_gfk)}")
-		if not isinstance(self.diq_ta_is_own, bool):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(self.diq_ta_is_own)}")
-		if self.dev_description is not None and not isinstance(self.dev_description, str):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(self.dev_description)}")
-		if self.last_devimp_msg is not None and not isinstance(self.last_devimp_msg, str):
-			raise ValueError(f"'last_devimp_msg' of incorrect type. Expected str, got {type(self.last_devimp_msg)}")
-		if self.upload_filename is not None and not isinstance(self.upload_filename, str):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(self.upload_filename)}")
-		if not isinstance(self.output_verbosity, bool):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(self.output_verbosity)}")
-		if not isinstance(self.dev_attributes_dict, dict):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(self.dev_attributes_dict)}")
-		if self.last_devimp_success is not None and not isinstance(self.last_devimp_success, bool):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(self.last_devimp_success)}")
-		if not isinstance(self.rplc_charset_errors, bool):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(self.rplc_charset_errors)}")
-
-	@staticmethod
-	def create_ta(dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		return {'name': 'nd.diq_ta_entry.create', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, dev_fqdn_new: str, diq_ta_gfk_new: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = True, dev_type_new: str = None, do_parse_new: bool = True, do_import_new: bool = True, dev_parser_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = False, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = False) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(dev_fqdn_old: str, diq_ta_gfk_old: str) -> dict:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str) -> list:
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, diq_ta_is_own_old: bool = None, diq_ta_gfk_list_old: list = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if diq_ta_gfk_list_old is not None and not (isinstance(diq_ta_gfk_list_old, list)):
-			raise ValueError(f"'diq_ta_gfk_list' of incorrect type. Expected list, got {type(diq_ta_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.diq_ta_entry.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'diq_ta_is_own': diq_ta_is_own_old, 'diq_ta_gfk_list': diq_ta_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'last_devimp_success': last_devimp_success_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, diq_ta_is_own_old: bool = None, diq_ta_gfk_list_old: list = None, filter_params_dict_old: dict = None, last_devimp_success_old: bool = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if diq_ta_is_own_old is not None and not (isinstance(diq_ta_is_own_old, bool)):
-			raise ValueError(f"'diq_ta_is_own' of incorrect type. Expected bool, got {type(diq_ta_is_own_old)}")
-		if diq_ta_gfk_list_old is not None and not (isinstance(diq_ta_gfk_list_old, list)):
-			raise ValueError(f"'diq_ta_gfk_list' of incorrect type. Expected list, got {type(diq_ta_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if last_devimp_success_old is not None and not (isinstance(last_devimp_success_old, bool)):
-			raise ValueError(f"'last_devimp_success' of incorrect type. Expected bool, got {type(last_devimp_success_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, diq_ta_is_own_old=diq_ta_is_own_old, diq_ta_gfk_list_old=diq_ta_gfk_list_old, filter_params_dict_old=filter_params_dict_old, last_devimp_success_old=last_devimp_success_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> dict:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		return {'name': 'nd.diq_ta_entry.update', 'new': _denullify_dict({'dev_nc': dev_nc_new, 'dev_acg': dev_acg_new, 'do_save': do_save_new, 'dev_fqdn': dev_fqdn_new, 'dev_type': dev_type_new, 'do_parse': do_parse_new, 'do_import': do_import_new, 'dev_parser': dev_parser_new, 'diq_ta_gfk': diq_ta_gfk_new, 'dev_description': dev_description_new, 'upload_filename': upload_filename_new, 'output_verbosity': output_verbosity_new, 'dev_attributes_dict': dev_attributes_dict_new, 'rplc_charset_errors': rplc_charset_errors_new}), 'old': _denullify_dict({'dev_fqdn': dev_fqdn_old, 'diq_ta_gfk': diq_ta_gfk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, dev_fqdn_old: str, diq_ta_gfk_old: str, dev_nc_new: str = None, dev_acg_new: str = None, do_save_new: bool = None, dev_fqdn_new: str = None, dev_type_new: str = None, do_parse_new: bool = None, do_import_new: bool = None, dev_parser_new: str = None, diq_ta_gfk_new: str = None, dev_description_new: Union[str, ExplicitNull] = None, upload_filename_new: Union[str, ExplicitNull] = None, output_verbosity_new: bool = None, dev_attributes_dict_new: dict = None, rplc_charset_errors_new: bool = None) -> list:
-		if dev_nc_new is not None and not (isinstance(dev_nc_new, str)):
-			raise ValueError(f"'dev_nc' of incorrect type. Expected str, got {type(dev_nc_new)}")
-		if dev_acg_new is not None and not (isinstance(dev_acg_new, str)):
-			raise ValueError(f"'dev_acg' of incorrect type. Expected str, got {type(dev_acg_new)}")
-		if do_save_new is not None and not (isinstance(do_save_new, bool)):
-			raise ValueError(f"'do_save' of incorrect type. Expected bool, got {type(do_save_new)}")
-		if dev_fqdn_new is not None and not (isinstance(dev_fqdn_new, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_new)}")
-		if dev_type_new is not None and not (isinstance(dev_type_new, str)):
-			raise ValueError(f"'dev_type' of incorrect type. Expected str, got {type(dev_type_new)}")
-		if do_parse_new is not None and not (isinstance(do_parse_new, bool)):
-			raise ValueError(f"'do_parse' of incorrect type. Expected bool, got {type(do_parse_new)}")
-		if do_import_new is not None and not (isinstance(do_import_new, bool)):
-			raise ValueError(f"'do_import' of incorrect type. Expected bool, got {type(do_import_new)}")
-		if dev_parser_new is not None and not (isinstance(dev_parser_new, str)):
-			raise ValueError(f"'dev_parser' of incorrect type. Expected str, got {type(dev_parser_new)}")
-		if diq_ta_gfk_new is not None and not (isinstance(diq_ta_gfk_new, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_new)}")
-		if dev_description_new is not None and not (isinstance(dev_description_new, str) or isinstance(dev_description_new, ExplicitNull)):
-			raise ValueError(f"'dev_description' of incorrect type. Expected str, got {type(dev_description_new)}")
-		if upload_filename_new is not None and not (isinstance(upload_filename_new, str) or isinstance(upload_filename_new, ExplicitNull)):
-			raise ValueError(f"'upload_filename' of incorrect type. Expected str, got {type(upload_filename_new)}")
-		if output_verbosity_new is not None and not (isinstance(output_verbosity_new, bool)):
-			raise ValueError(f"'output_verbosity' of incorrect type. Expected bool, got {type(output_verbosity_new)}")
-		if dev_attributes_dict_new is not None and not (isinstance(dev_attributes_dict_new, dict)):
-			raise ValueError(f"'dev_attributes_dict' of incorrect type. Expected dict, got {type(dev_attributes_dict_new)}")
-		if rplc_charset_errors_new is not None and not (isinstance(rplc_charset_errors_new, bool)):
-			raise ValueError(f"'rplc_charset_errors' of incorrect type. Expected bool, got {type(rplc_charset_errors_new)}")
-		if not (isinstance(dev_fqdn_old, str)):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(dev_fqdn_old)}")
-		if not (isinstance(diq_ta_gfk_old, str)):
-			raise ValueError(f"'diq_ta_gfk' of incorrect type. Expected str, got {type(diq_ta_gfk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(dev_nc_new=dev_nc_new, dev_acg_new=dev_acg_new, do_save_new=do_save_new, dev_fqdn_new=dev_fqdn_new, dev_type_new=dev_type_new, do_parse_new=do_parse_new, do_import_new=do_import_new, dev_parser_new=dev_parser_new, diq_ta_gfk_new=diq_ta_gfk_new, dev_description_new=dev_description_new, upload_filename_new=upload_filename_new, output_verbosity_new=output_verbosity_new, dev_attributes_dict_new=dev_attributes_dict_new, rplc_charset_errors_new=rplc_charset_errors_new, dev_fqdn_old=dev_fqdn_old, diq_ta_gfk_old=diq_ta_gfk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vlan_gfk: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vlan_gfk, str):
-			raise ValueError(f"'vlan_gfk' of incorrect type. Expected str, got {type(self.vlan_gfk)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vlan_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'vlan_gfk_list': vlan_gfk_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vlan_gfk_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vlan_gfk_list_old is not None and not (isinstance(vlan_gfk_list_old, list)):
-			raise ValueError(f"'vlan_gfk_list' of incorrect type. Expected list, got {type(vlan_gfk_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, vlan_gfk_list_old=vlan_gfk_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan(APIObject):
-	bcd: str
-	gpk: str
-	vni: int
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.bcd, str):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(self.bcd)}")
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'nd.vxlan.create', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_new: str, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(vni_old: int) -> dict:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, vni_old: int) -> list:
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, vni_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if vni_list_old is not None and not (isinstance(vni_list_old, list)):
-			raise ValueError(f"'vni_list' of incorrect type. Expected list, got {type(vni_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'vni_list': vni_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, vni_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if vni_list_old is not None and not (isinstance(vni_list_old, list)):
-			raise ValueError(f"'vni_list' of incorrect type. Expected list, got {type(vni_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, vni_list_old=vni_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		return {'name': 'nd.vxlan.update', 'new': _denullify_dict({'bcd': bcd_new, 'vni': vni_new, 'description': description_new}), 'old': _denullify_dict({'vni': vni_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, vni_old: int, bcd_new: str = None, vni_new: int = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if bcd_new is not None and not (isinstance(bcd_new, str)):
-			raise ValueError(f"'bcd' of incorrect type. Expected str, got {type(bcd_new)}")
-		if vni_new is not None and not (isinstance(vni_new, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(vni_old, int)):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(vni_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(bcd_new=bcd_new, vni_new=vni_new, description_new=description_new, vni_old=vni_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Vxlan2device(APIObject):
-	gpk: str
-	dev_fqdn: str
-	vxlan_vni: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.dev_fqdn, str):
-			raise ValueError(f"'dev_fqdn' of incorrect type. Expected str, got {type(self.dev_fqdn)}")
-		if not isinstance(self.vxlan_vni, int):
-			raise ValueError(f"'vxlan_vni' of incorrect type. Expected int, got {type(self.vxlan_vni)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vxlan_vni_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vxlan_vni_list_old is not None and not (isinstance(vxlan_vni_list_old, list)):
-			raise ValueError(f"'vxlan_vni_list' of incorrect type. Expected list, got {type(vxlan_vni_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.vxlan2device.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'dev_fqdn_list': dev_fqdn_list_old, 'vxlan_vni_list': vxlan_vni_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, dev_fqdn_list_old: list = None, vxlan_vni_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if dev_fqdn_list_old is not None and not (isinstance(dev_fqdn_list_old, list)):
-			raise ValueError(f"'dev_fqdn_list' of incorrect type. Expected list, got {type(dev_fqdn_list_old)}")
-		if vxlan_vni_list_old is not None and not (isinstance(vxlan_vni_list_old, list)):
-			raise ValueError(f"'vxlan_vni_list' of incorrect type. Expected list, got {type(vxlan_vni_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, dev_fqdn_list_old=dev_fqdn_list_old, vxlan_vni_list_old=vxlan_vni_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2group(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	group_name: str
-	parent_group_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.group_name, str):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(self.group_name)}")
-		if not isinstance(self.parent_group_name, str):
-			raise ValueError(f"'parent_group_name' of incorrect type. Expected str, got {type(self.parent_group_name)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, group_name_new: str) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		return {'name': 'nd.bcd2group.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'group_name': group_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, group_name_new: str) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if not (isinstance(group_name_new, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, group_name_new=group_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, group_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		return {'name': 'nd.bcd2group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'group_name': group_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, group_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(group_name_old, str)):
-			raise ValueError(f"'group_name' of incorrect type. Expected str, got {type(group_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, group_name_old=group_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'bcd_name_list': bcd_name_list_old, 'group_name_list': group_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, bcd_name_list_old: list = None, group_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if group_name_list_old is not None and not (isinstance(group_name_list_old, list)):
-			raise ValueError(f"'group_name_list' of incorrect type. Expected list, got {type(group_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, bcd_name_list_old=bcd_name_list_old, group_name_list_old=group_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Bcd2ou(APIObject):
-	gpk: str
-	is_own: bool
-	bcd_name: str
-	is_recursive: bool
-	ou_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_own, bool):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(self.is_own)}")
-		if not isinstance(self.bcd_name, str):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(self.bcd_name)}")
-		if not isinstance(self.is_recursive, bool):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(self.is_recursive)}")
-		if not isinstance(self.ou_short_name, str):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(self.ou_short_name)}")
-
-	@staticmethod
-	def create_ta(bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> dict:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		return {'name': 'nd.bcd2ou.create', 'new': _denullify_dict({'bcd_name': bcd_name_new, 'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, bcd_name_new: str, ou_short_name_new: str, is_recursive_new: bool = False) -> list:
-		if not (isinstance(bcd_name_new, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_new)}")
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(bcd_name_new=bcd_name_new, is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(bcd_name_old: str, ou_short_name_old: str) -> dict:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str) -> list:
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, bcd_name_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> dict:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.bcd2ou.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_own': is_own_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_recursive': is_recursive_old, 'bcd_name_list': bcd_name_list_old, 'filter_params_dict': filter_params_dict_old, 'ou_short_name_list': ou_short_name_list_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_own_old: bool = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_recursive_old: bool = None, bcd_name_list_old: list = None, filter_params_dict_old: dict = None, ou_short_name_list_old: list = None, sorting_params_list_old: list = None) -> list:
-		if is_own_old is not None and not (isinstance(is_own_old, bool)):
-			raise ValueError(f"'is_own' of incorrect type. Expected bool, got {type(is_own_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_recursive_old is not None and not (isinstance(is_recursive_old, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_old)}")
-		if bcd_name_list_old is not None and not (isinstance(bcd_name_list_old, list)):
-			raise ValueError(f"'bcd_name_list' of incorrect type. Expected list, got {type(bcd_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if ou_short_name_list_old is not None and not (isinstance(ou_short_name_list_old, list)):
-			raise ValueError(f"'ou_short_name_list' of incorrect type. Expected list, got {type(ou_short_name_list_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_own_old=is_own_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_recursive_old=is_recursive_old, bcd_name_list_old=bcd_name_list_old, filter_params_dict_old=filter_params_dict_old, ou_short_name_list_old=ou_short_name_list_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> dict:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		return {'name': 'nd.bcd2ou.update', 'new': _denullify_dict({'is_recursive': is_recursive_new, 'ou_short_name': ou_short_name_new}), 'old': _denullify_dict({'bcd_name': bcd_name_old, 'ou_short_name': ou_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, bcd_name_old: str, ou_short_name_old: str, is_recursive_new: bool = None, ou_short_name_new: str = None) -> list:
-		if is_recursive_new is not None and not (isinstance(is_recursive_new, bool)):
-			raise ValueError(f"'is_recursive' of incorrect type. Expected bool, got {type(is_recursive_new)}")
-		if ou_short_name_new is not None and not (isinstance(ou_short_name_new, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_new)}")
-		if not (isinstance(bcd_name_old, str)):
-			raise ValueError(f"'bcd_name' of incorrect type. Expected str, got {type(bcd_name_old)}")
-		if not (isinstance(ou_short_name_old, str)):
-			raise ValueError(f"'ou_short_name' of incorrect type. Expected str, got {type(ou_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_recursive_new=is_recursive_new, ou_short_name_new=ou_short_name_new, bcd_name_old=bcd_name_old, ou_short_name_old=ou_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VxlanImp(APIObject):
-	vni: int
-
-	def __post_init__(self):
-		if self.vni is not None and not isinstance(self.vni, int):
-			raise ValueError(f"'vni' of incorrect type. Expected int, got {type(self.vni)}")
-
-@dataclass()
-class IpSubnetStatistic(APIObject):
-	ip_subnet_gfk: str
-	ip_subnet_cidr: str
-	dhcp_lease_count: int
-	dhcp_ip_addr_count: int
-	dns_ip_addr_rr_count: int
-	dns_ip_addr_rsv_count: int
-	dhcp_active_lease_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.ip_subnet_gfk, str):
-			raise ValueError(f"'ip_subnet_gfk' of incorrect type. Expected str, got {type(self.ip_subnet_gfk)}")
-		if not isinstance(self.ip_subnet_cidr, str):
-			raise ValueError(f"'ip_subnet_cidr' of incorrect type. Expected str, got {type(self.ip_subnet_cidr)}")
-		if not isinstance(self.dhcp_lease_count, int):
-			raise ValueError(f"'dhcp_lease_count' of incorrect type. Expected int, got {type(self.dhcp_lease_count)}")
-		if not isinstance(self.dhcp_ip_addr_count, int):
-			raise ValueError(f"'dhcp_ip_addr_count' of incorrect type. Expected int, got {type(self.dhcp_ip_addr_count)}")
-		if not isinstance(self.dns_ip_addr_rr_count, int):
-			raise ValueError(f"'dns_ip_addr_rr_count' of incorrect type. Expected int, got {type(self.dns_ip_addr_rr_count)}")
-		if not isinstance(self.dns_ip_addr_rsv_count, int):
-			raise ValueError(f"'dns_ip_addr_rsv_count' of incorrect type. Expected int, got {type(self.dns_ip_addr_rsv_count)}")
-		if not isinstance(self.dhcp_active_lease_count, int):
-			raise ValueError(f"'dhcp_active_lease_count' of incorrect type. Expected int, got {type(self.dhcp_active_lease_count)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nd.ip_subnet_statistic.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/ndcfg.py b/4.2/golang/ndcfg.py
deleted file mode 100644
index 8e48fd9..0000000
--- a/4.2/golang/ndcfg.py
+++ /dev/null
@@ -1,3543 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Module2slotType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	required_slot_width: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.required_slot_width, int):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(self.required_slot_width)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		return {'name': 'ndcfg.module2slot_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, required_slot_width_new: int = 1) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.module2slot_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'required_slot_width': required_slot_width_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, required_slot_width_new: int = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if required_slot_width_new is not None and not (isinstance(required_slot_width_new, int)):
-			raise ValueError(f"'required_slot_width' of incorrect type. Expected int, got {type(required_slot_width_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, required_slot_width_new=required_slot_width_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleTypeClass(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.module_type_class.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type_class.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortProto(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_proto.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_proto.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPort2moduleType(APIObject):
-	gpk: str
-	int_gfk: str
-	port_type: str
-	port_count: int
-	port_name1: str
-	port_proto: str
-	port_speed: str
-	module_type: str
-	num_mode_name: str
-	num_mode_level: int
-	port_inc_count: int
-	port_type_group: str
-	port_type_order: int
-	port_name_prefix: str
-	port_name_suffix: str
-	port_name_varprfx: str
-	port_name_varprfx_join_dl: str
-	port_name_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.int_gfk, str):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(self.int_gfk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_count, int):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(self.port_count)}")
-		if self.port_name1 is not None and not isinstance(self.port_name1, str):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(self.port_name1)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if not isinstance(self.port_inc_count, int):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(self.port_inc_count)}")
-		if not isinstance(self.port_type_group, str):
-			raise ValueError(f"'port_type_group' of incorrect type. Expected str, got {type(self.port_type_group)}")
-		if not isinstance(self.port_type_order, int):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(self.port_type_order)}")
-		if self.port_name_prefix is not None and not isinstance(self.port_name_prefix, str):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(self.port_name_prefix)}")
-		if self.port_name_suffix is not None and not isinstance(self.port_name_suffix, str):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(self.port_name_suffix)}")
-		if self.port_name_varprfx is not None and not isinstance(self.port_name_varprfx, str):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(self.port_name_varprfx)}")
-		if self.port_name_varprfx_join_dl is not None and not isinstance(self.port_name_varprfx_join_dl, str):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_join_dl)}")
-		if self.port_name_varprfx_split_dl is not None and not isinstance(self.port_name_varprfx_split_dl, str):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(self.port_name_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.p_port2module_type.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_count_new: int, port_proto_new: str, port_speed_new: str, module_type_new: str, num_mode_name_new: str, num_mode_level_new: int, port_name1_new: Union[str, ExplicitNull] = None, port_inc_count_new: int = 1, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, port_type_group_list_old: list = None, port_type_order_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if port_type_group_list_old is not None and not (isinstance(port_type_group_list_old, list)):
-			raise ValueError(f"'port_type_group_list' of incorrect type. Expected list, got {type(port_type_group_list_old)}")
-		if port_type_order_list_old is not None and not (isinstance(port_type_order_list_old, list)):
-			raise ValueError(f"'port_type_order_list' of incorrect type. Expected list, got {type(port_type_order_list_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'port_type_list': port_type_list_old, 'port_proto_list': port_proto_list_old, 'port_speed_list': port_speed_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'port_type_group_list': port_type_group_list_old, 'port_type_order_list': port_type_order_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, port_type_group_list_old: list = None, port_type_order_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if port_type_group_list_old is not None and not (isinstance(port_type_group_list_old, list)):
-			raise ValueError(f"'port_type_group_list' of incorrect type. Expected list, got {type(port_type_group_list_old)}")
-		if port_type_order_list_old is not None and not (isinstance(port_type_order_list_old, list)):
-			raise ValueError(f"'port_type_order_list' of incorrect type. Expected list, got {type(port_type_order_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, port_type_list_old=port_type_list_old, port_proto_list_old=port_proto_list_old, port_speed_list_old=port_speed_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, port_type_group_list_old=port_type_group_list_old, port_type_order_list_old=port_type_order_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.p_port2module_type.update', 'new': _denullify_dict({'int_gfk': int_gfk_new, 'port_type': port_type_new, 'port_count': port_count_new, 'port_name1': port_name1_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'num_mode_level': num_mode_level_new, 'port_inc_count': port_inc_count_new, 'port_type_order': port_type_order_new, 'port_name_prefix': port_name_prefix_new, 'port_name_suffix': port_name_suffix_new, 'port_name_varprfx': port_name_varprfx_new, 'port_name_varprfx_join_dl': port_name_varprfx_join_dl_new, 'port_name_varprfx_split_dl': port_name_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, int_gfk_new: str = None, port_type_new: str = None, port_count_new: int = None, port_name1_new: Union[str, ExplicitNull] = None, port_proto_new: str = None, port_speed_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, num_mode_level_new: int = None, port_inc_count_new: int = None, port_type_order_new: int = None, port_name_prefix_new: Union[str, ExplicitNull] = None, port_name_suffix_new: Union[str, ExplicitNull] = None, port_name_varprfx_new: Union[str, ExplicitNull] = None, port_name_varprfx_join_dl_new: Union[str, ExplicitNull] = None, port_name_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if int_gfk_new is not None and not (isinstance(int_gfk_new, str)):
-			raise ValueError(f"'int_gfk' of incorrect type. Expected str, got {type(int_gfk_new)}")
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_count_new is not None and not (isinstance(port_count_new, int)):
-			raise ValueError(f"'port_count' of incorrect type. Expected int, got {type(port_count_new)}")
-		if port_name1_new is not None and not (isinstance(port_name1_new, str) or isinstance(port_name1_new, ExplicitNull)):
-			raise ValueError(f"'port_name1' of incorrect type. Expected str, got {type(port_name1_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if port_inc_count_new is not None and not (isinstance(port_inc_count_new, int)):
-			raise ValueError(f"'port_inc_count' of incorrect type. Expected int, got {type(port_inc_count_new)}")
-		if port_type_order_new is not None and not (isinstance(port_type_order_new, int)):
-			raise ValueError(f"'port_type_order' of incorrect type. Expected int, got {type(port_type_order_new)}")
-		if port_name_prefix_new is not None and not (isinstance(port_name_prefix_new, str) or isinstance(port_name_prefix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_prefix' of incorrect type. Expected str, got {type(port_name_prefix_new)}")
-		if port_name_suffix_new is not None and not (isinstance(port_name_suffix_new, str) or isinstance(port_name_suffix_new, ExplicitNull)):
-			raise ValueError(f"'port_name_suffix' of incorrect type. Expected str, got {type(port_name_suffix_new)}")
-		if port_name_varprfx_new is not None and not (isinstance(port_name_varprfx_new, str) or isinstance(port_name_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx' of incorrect type. Expected str, got {type(port_name_varprfx_new)}")
-		if port_name_varprfx_join_dl_new is not None and not (isinstance(port_name_varprfx_join_dl_new, str) or isinstance(port_name_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_join_dl' of incorrect type. Expected str, got {type(port_name_varprfx_join_dl_new)}")
-		if port_name_varprfx_split_dl_new is not None and not (isinstance(port_name_varprfx_split_dl_new, str) or isinstance(port_name_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'port_name_varprfx_split_dl' of incorrect type. Expected str, got {type(port_name_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(int_gfk_new=int_gfk_new, port_type_new=port_type_new, port_count_new=port_count_new, port_name1_new=port_name1_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, num_mode_level_new=num_mode_level_new, port_inc_count_new=port_inc_count_new, port_type_order_new=port_type_order_new, port_name_prefix_new=port_name_prefix_new, port_name_suffix_new=port_name_suffix_new, port_name_varprfx_new=port_name_varprfx_new, port_name_varprfx_join_dl_new=port_name_varprfx_join_dl_new, port_name_varprfx_split_dl_new=port_name_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleType(APIObject):
-	gpk: str
-	slot_type: str
-	module_type: str
-	num_mode_name: str
-	subslot_count: int
-	subslot_name1: str
-	num_mode_level: int
-	subslot_prefix: str
-	subslot_inc_count: int
-	subslot_type_order: int
-	backplane_port_descr: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if not isinstance(self.num_mode_name, str):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(self.num_mode_name)}")
-		if not isinstance(self.subslot_count, int):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(self.subslot_count)}")
-		if self.subslot_name1 is not None and not isinstance(self.subslot_name1, str):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(self.subslot_name1)}")
-		if not isinstance(self.num_mode_level, int):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(self.num_mode_level)}")
-		if self.subslot_prefix is not None and not isinstance(self.subslot_prefix, str):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(self.subslot_prefix)}")
-		if not isinstance(self.subslot_inc_count, int):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(self.subslot_inc_count)}")
-		if not isinstance(self.subslot_type_order, int):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(self.subslot_type_order)}")
-		if self.backplane_port_descr is not None and not isinstance(self.backplane_port_descr, str):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(self.backplane_port_descr)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		return {'name': 'ndcfg.slot2module_type.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, num_mode_name_new: str, subslot_count_new: int, num_mode_level_new: int, subslot_name1_new: Union[str, ExplicitNull] = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = 1, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(slot_type_old: str, module_type_old: str) -> dict:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, slot_type_old: str, module_type_old: str) -> list:
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		return {'name': 'ndcfg.slot2module_type.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'module_type': module_type_new, 'num_mode_name': num_mode_name_new, 'subslot_count': subslot_count_new, 'subslot_name1': subslot_name1_new, 'num_mode_level': num_mode_level_new, 'subslot_prefix': subslot_prefix_new, 'subslot_inc_count': subslot_inc_count_new, 'subslot_type_order': subslot_type_order_new, 'backplane_port_descr': backplane_port_descr_new}), 'old': _denullify_dict({'slot_type': slot_type_old, 'module_type': module_type_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, slot_type_old: str, module_type_old: str, slot_type_new: str = None, module_type_new: str = None, num_mode_name_new: str = None, subslot_count_new: int = None, subslot_name1_new: Union[str, ExplicitNull] = None, num_mode_level_new: int = None, subslot_prefix_new: Union[str, ExplicitNull] = None, subslot_inc_count_new: int = None, subslot_type_order_new: int = None, backplane_port_descr_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if num_mode_name_new is not None and not (isinstance(num_mode_name_new, str)):
-			raise ValueError(f"'num_mode_name' of incorrect type. Expected str, got {type(num_mode_name_new)}")
-		if subslot_count_new is not None and not (isinstance(subslot_count_new, int)):
-			raise ValueError(f"'subslot_count' of incorrect type. Expected int, got {type(subslot_count_new)}")
-		if subslot_name1_new is not None and not (isinstance(subslot_name1_new, str) or isinstance(subslot_name1_new, ExplicitNull)):
-			raise ValueError(f"'subslot_name1' of incorrect type. Expected str, got {type(subslot_name1_new)}")
-		if num_mode_level_new is not None and not (isinstance(num_mode_level_new, int)):
-			raise ValueError(f"'num_mode_level' of incorrect type. Expected int, got {type(num_mode_level_new)}")
-		if subslot_prefix_new is not None and not (isinstance(subslot_prefix_new, str) or isinstance(subslot_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subslot_prefix' of incorrect type. Expected str, got {type(subslot_prefix_new)}")
-		if subslot_inc_count_new is not None and not (isinstance(subslot_inc_count_new, int)):
-			raise ValueError(f"'subslot_inc_count' of incorrect type. Expected int, got {type(subslot_inc_count_new)}")
-		if subslot_type_order_new is not None and not (isinstance(subslot_type_order_new, int)):
-			raise ValueError(f"'subslot_type_order' of incorrect type. Expected int, got {type(subslot_type_order_new)}")
-		if backplane_port_descr_new is not None and not (isinstance(backplane_port_descr_new, str) or isinstance(backplane_port_descr_new, ExplicitNull)):
-			raise ValueError(f"'backplane_port_descr' of incorrect type. Expected str, got {type(backplane_port_descr_new)}")
-		if not (isinstance(slot_type_old, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_old)}")
-		if not (isinstance(module_type_old, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, module_type_new=module_type_new, num_mode_name_new=num_mode_name_new, subslot_count_new=subslot_count_new, subslot_name1_new=subslot_name1_new, num_mode_level_new=num_mode_level_new, subslot_prefix_new=subslot_prefix_new, subslot_inc_count_new=subslot_inc_count_new, subslot_type_order_new=subslot_type_order_new, backplane_port_descr_new=backplane_port_descr_new, slot_type_old=slot_type_old, module_type_old=module_type_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortType(APIObject):
-	gpk: str
-	name: str
-	is_internal: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_internal, bool):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(self.is_internal)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_internal_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		return {'name': 'ndcfg.p_port_type.create', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_internal_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_internal_new=is_internal_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'is_internal': is_internal_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, is_internal_old: bool = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if is_internal_old is not None and not (isinstance(is_internal_old, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, is_internal_old=is_internal_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_internal_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type.update', 'new': _denullify_dict({'name': name_new, 'is_internal': is_internal_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_internal_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_internal_new is not None and not (isinstance(is_internal_new, bool)):
-			raise ValueError(f"'is_internal' of incorrect type. Expected bool, got {type(is_internal_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_internal_new=is_internal_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	slot_width: int
-	submt_count: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.slot_width, int):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(self.slot_width)}")
-		if not isinstance(self.submt_count, int):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(self.submt_count)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str, slot_width_new: int = 1) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		return {'name': 'ndcfg.slot_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str, slot_width_new: int = 1) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(cls_old: str = None, gpk_list_old: list = None, name_list_old: list = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'cls': cls_old, 'gpk_list': gpk_list_old, 'name_list': name_list_old, 'slot_width': slot_width_old, 'fetch_limit': fetch_limit_old, 'submt_count': submt_count_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, cls_old: str = None, gpk_list_old: list = None, name_list_old: list = None, slot_width_old: int = None, fetch_limit_old: int = None, submt_count_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if slot_width_old is not None and not (isinstance(slot_width_old, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if submt_count_old is not None and not (isinstance(submt_count_old, int)):
-			raise ValueError(f"'submt_count' of incorrect type. Expected int, got {type(submt_count_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(cls_old=cls_old, gpk_list_old=gpk_list_old, name_list_old=name_list_old, slot_width_old=slot_width_old, fetch_limit_old=fetch_limit_old, submt_count_old=submt_count_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'slot_width': slot_width_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, slot_width_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if slot_width_new is not None and not (isinstance(slot_width_new, int)):
-			raise ValueError(f"'slot_width' of incorrect type. Expected int, got {type(slot_width_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, slot_width_new=slot_width_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeGroup(APIObject):
-	gpk: str
-	name: str
-	is_permanent: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_permanent, bool):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(self.is_permanent)}")
-
-	@staticmethod
-	def create_ta(name_new: str, is_permanent_new: bool) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		return {'name': 'ndcfg.p_port_type_group.create', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, is_permanent_new: bool) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, is_permanent_new=is_permanent_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'is_permanent': is_permanent_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, is_permanent_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_permanent_old is not None and not (isinstance(is_permanent_old, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, is_permanent_old=is_permanent_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, is_permanent_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_type_group.update', 'new': _denullify_dict({'name': name_new, 'is_permanent': is_permanent_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, is_permanent_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if is_permanent_new is not None and not (isinstance(is_permanent_new, bool)):
-			raise ValueError(f"'is_permanent' of incorrect type. Expected bool, got {type(is_permanent_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, is_permanent_new=is_permanent_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetInstnc(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_instnc.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_instnc.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortTypeData(APIObject):
-	gpk: str
-	port_type: str
-	port_group: str
-	port_proto: str
-	port_speed: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.port_type, str):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(self.port_type)}")
-		if not isinstance(self.port_group, str):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(self.port_group)}")
-		if not isinstance(self.port_proto, str):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(self.port_proto)}")
-		if not isinstance(self.port_speed, str):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(self.port_speed)}")
-
-	@staticmethod
-	def create_ta(port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> dict:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		return {'name': 'ndcfg.p_port_type_data.create', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, port_type_new: str, port_group_new: str, port_proto_new: str, port_speed_new: str) -> list:
-		if not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(port_type_old: str, port_proto_old: str, port_speed_old: str) -> dict:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str) -> list:
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'port_type_list': port_type_list_old, 'port_proto_list': port_proto_list_old, 'port_speed_list': port_speed_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, port_type_list_old: list = None, port_proto_list_old: list = None, port_speed_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if port_type_list_old is not None and not (isinstance(port_type_list_old, list)):
-			raise ValueError(f"'port_type_list' of incorrect type. Expected list, got {type(port_type_list_old)}")
-		if port_proto_list_old is not None and not (isinstance(port_proto_list_old, list)):
-			raise ValueError(f"'port_proto_list' of incorrect type. Expected list, got {type(port_proto_list_old)}")
-		if port_speed_list_old is not None and not (isinstance(port_speed_list_old, list)):
-			raise ValueError(f"'port_speed_list' of incorrect type. Expected list, got {type(port_speed_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, port_type_list_old=port_type_list_old, port_proto_list_old=port_proto_list_old, port_speed_list_old=port_speed_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> dict:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		return {'name': 'ndcfg.p_port_type_data.update', 'new': _denullify_dict({'port_type': port_type_new, 'port_group': port_group_new, 'port_proto': port_proto_new, 'port_speed': port_speed_new}), 'old': _denullify_dict({'port_type': port_type_old, 'port_proto': port_proto_old, 'port_speed': port_speed_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, port_type_old: str, port_proto_old: str, port_speed_old: str, port_type_new: str = None, port_group_new: str = None, port_proto_new: str = None, port_speed_new: str = None) -> list:
-		if port_type_new is not None and not (isinstance(port_type_new, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_new)}")
-		if port_group_new is not None and not (isinstance(port_group_new, str)):
-			raise ValueError(f"'port_group' of incorrect type. Expected str, got {type(port_group_new)}")
-		if port_proto_new is not None and not (isinstance(port_proto_new, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_new)}")
-		if port_speed_new is not None and not (isinstance(port_speed_new, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_new)}")
-		if not (isinstance(port_type_old, str)):
-			raise ValueError(f"'port_type' of incorrect type. Expected str, got {type(port_type_old)}")
-		if not (isinstance(port_proto_old, str)):
-			raise ValueError(f"'port_proto' of incorrect type. Expected str, got {type(port_proto_old)}")
-		if not (isinstance(port_speed_old, str)):
-			raise ValueError(f"'port_speed' of incorrect type. Expected str, got {type(port_speed_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(port_type_new=port_type_new, port_group_new=port_group_new, port_proto_new=port_proto_new, port_speed_new=port_speed_new, port_type_old=port_type_old, port_proto_old=port_proto_old, port_speed_old=port_speed_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ModuleType(APIObject):
-	gpk: str
-	name: str
-	cls: str
-	is_child: bool
-	is_active: bool
-	is_parent: bool
-	has_unq_name: bool
-	is_forwarding: bool
-	is_loc_depdnt: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.cls, str):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(self.cls)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.has_unq_name, bool):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(self.has_unq_name)}")
-		if not isinstance(self.is_forwarding, bool):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(self.is_forwarding)}")
-		if not isinstance(self.is_loc_depdnt, bool):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(self.is_loc_depdnt)}")
-
-	@staticmethod
-	def create_ta(name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		return {'name': 'ndcfg.module_type.create', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(cls_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.module_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'cls': cls_old, 'gpk_list': gpk_list_old, 'is_child': is_child_old, 'is_active': is_active_old, 'is_parent': is_parent_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'has_unq_name': has_unq_name_old, 'is_forwarding': is_forwarding_old, 'is_loc_depdnt': is_loc_depdnt_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, cls_old: str = None, gpk_list_old: list = None, is_child_old: bool = None, is_active_old: bool = None, is_parent_old: bool = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, has_unq_name_old: bool = None, is_forwarding_old: bool = None, is_loc_depdnt_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if cls_old is not None and not (isinstance(cls_old, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if has_unq_name_old is not None and not (isinstance(has_unq_name_old, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_old)}")
-		if is_forwarding_old is not None and not (isinstance(is_forwarding_old, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_old)}")
-		if is_loc_depdnt_old is not None and not (isinstance(is_loc_depdnt_old, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(cls_old=cls_old, gpk_list_old=gpk_list_old, is_child_old=is_child_old, is_active_old=is_active_old, is_parent_old=is_parent_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, has_unq_name_old=has_unq_name_old, is_forwarding_old=is_forwarding_old, is_loc_depdnt_old=is_loc_depdnt_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.module_type.update', 'new': _denullify_dict({'name': name_new, 'cls': cls_new, 'is_child': is_child_new, 'is_active': is_active_new, 'is_parent': is_parent_new, 'has_unq_name': has_unq_name_new, 'is_forwarding': is_forwarding_new, 'is_loc_depdnt': is_loc_depdnt_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, cls_new: str = None, is_child_new: bool = None, is_active_new: bool = None, is_parent_new: bool = None, has_unq_name_new: bool = None, is_forwarding_new: bool = None, is_loc_depdnt_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if cls_new is not None and not (isinstance(cls_new, str)):
-			raise ValueError(f"'cls' of incorrect type. Expected str, got {type(cls_new)}")
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_active_new is not None and not (isinstance(is_active_new, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if has_unq_name_new is not None and not (isinstance(has_unq_name_new, bool)):
-			raise ValueError(f"'has_unq_name' of incorrect type. Expected bool, got {type(has_unq_name_new)}")
-		if is_forwarding_new is not None and not (isinstance(is_forwarding_new, bool)):
-			raise ValueError(f"'is_forwarding' of incorrect type. Expected bool, got {type(is_forwarding_new)}")
-		if is_loc_depdnt_new is not None and not (isinstance(is_loc_depdnt_new, bool)):
-			raise ValueError(f"'is_loc_depdnt' of incorrect type. Expected bool, got {type(is_loc_depdnt_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, cls_new=cls_new, is_child_new=is_child_new, is_active_new=is_active_new, is_parent_new=is_parent_new, has_unq_name_new=has_unq_name_new, is_forwarding_new=is_forwarding_new, is_loc_depdnt_new=is_loc_depdnt_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DeviceType(APIObject):
-	gpk: str
-	name: str
-	description: str
-	nw_fwd_level: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.nw_fwd_level, int):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(self.nw_fwd_level)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: str, nw_fwd_level_new: int) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.create', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: str, nw_fwd_level_new: int) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.device_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.device_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'nw_fwd_level': nw_fwd_level_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, nw_fwd_level_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if nw_fwd_level_old is not None and not (isinstance(nw_fwd_level_old, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, nw_fwd_level_old=nw_fwd_level_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		return {'name': 'ndcfg.device_type.update', 'new': _denullify_dict({'name': name_new, 'description': description_new, 'nw_fwd_level': nw_fwd_level_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_new: str = None, description_new: str = None, nw_fwd_level_new: int = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if nw_fwd_level_new is not None and not (isinstance(nw_fwd_level_new, int)):
-			raise ValueError(f"'nw_fwd_level' of incorrect type. Expected int, got {type(nw_fwd_level_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, nw_fwd_level_new=nw_fwd_level_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser(APIObject):
-	gpk: str
-	name: str
-	exec_args: dict
-	description: str
-	access_group: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.exec_args, dict):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(self.exec_args)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-		if not isinstance(self.access_group, str):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(self.access_group)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		return {'name': 'ndcfg.parser.create', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, access_group_new: str, exec_args_new: dict = {}, description_new: Union[str, ExplicitNull] = None, is_executable_new: bool = True) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'access_group': access_group_old, 'fetch_offset': fetch_offset_old, 'is_executable': is_executable_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, access_group_old: str = None, fetch_offset_old: int = None, is_executable_old: bool = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if access_group_old is not None and not (isinstance(access_group_old, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, access_group_old=access_group_old, fetch_offset_old=fetch_offset_old, is_executable_old=is_executable_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.parser.update', 'new': _denullify_dict({'name': name_new, 'exec_args': exec_args_new, 'description': description_new, 'access_group': access_group_new, 'is_executable': is_executable_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, exec_args_new: dict = None, description_new: Union[str, ExplicitNull] = None, access_group_new: str = None, is_executable_new: bool = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if exec_args_new is not None and not (isinstance(exec_args_new, dict)):
-			raise ValueError(f"'exec_args' of incorrect type. Expected dict, got {type(exec_args_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if access_group_new is not None and not (isinstance(access_group_new, str)):
-			raise ValueError(f"'access_group' of incorrect type. Expected str, got {type(access_group_new)}")
-		if is_executable_new is not None and not (isinstance(is_executable_new, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, exec_args_new=exec_args_new, description_new=description_new, access_group_new=access_group_new, is_executable_new=is_executable_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(name_new: str, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd.create', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd.update', 'new': _denullify_dict({'name': name_new, 'description': description_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, description_new=description_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NumMode(APIObject):
-	gpk: str
-	name: str
-	level: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.level, int):
-			raise ValueError(f"'level' of incorrect type. Expected int, got {type(self.level)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, level_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if level_list_old is not None and not (isinstance(level_list_old, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.num_mode.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'level_list': level_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, level_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if level_list_old is not None and not (isinstance(level_list_old, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, level_list_old=level_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class PPortSpeed(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.p_port_speed.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.p_port_speed.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdCateg(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.bcd_categ.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.bcd_categ.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class BcdSeclvl(APIObject):
-	gpk: str
-	value: int
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, int):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(self.value)}")
-
-	@staticmethod
-	def create_ta(value_new: int) -> dict:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.create', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: int) -> list:
-		if not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: int) -> dict:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: int) -> list:
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: int, value_new: int = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		return {'name': 'ndcfg.bcd_seclvl.update', 'new': _denullify_dict({'value': value_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: int, value_new: int = None) -> list:
-		if value_new is not None and not (isinstance(value_new, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_new)}")
-		if not (isinstance(value_old, int)):
-			raise ValueError(f"'value' of incorrect type. Expected int, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class NetCmpnd2instnc(APIObject):
-	gpk: str
-	net_cmpnd: str
-	net_instnc: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.net_cmpnd, str):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(self.net_cmpnd)}")
-		if not isinstance(self.net_instnc, str):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(self.net_instnc)}")
-
-	@staticmethod
-	def create_ta(net_cmpnd_new: str, net_instnc_new: str) -> dict:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.create', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, net_cmpnd_new: str, net_instnc_new: str) -> list:
-		if not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(net_cmpnd_old: str, net_instnc_old: str) -> dict:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str) -> list:
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_cmpnd_list_old: list = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_cmpnd_list_old is not None and not (isinstance(net_cmpnd_list_old, list)):
-			raise ValueError(f"'net_cmpnd_list' of incorrect type. Expected list, got {type(net_cmpnd_list_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'net_cmpnd_list': net_cmpnd_list_old, 'net_instnc_list': net_instnc_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, net_cmpnd_list_old: list = None, net_instnc_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if net_cmpnd_list_old is not None and not (isinstance(net_cmpnd_list_old, list)):
-			raise ValueError(f"'net_cmpnd_list' of incorrect type. Expected list, got {type(net_cmpnd_list_old)}")
-		if net_instnc_list_old is not None and not (isinstance(net_instnc_list_old, list)):
-			raise ValueError(f"'net_instnc_list' of incorrect type. Expected list, got {type(net_instnc_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, net_cmpnd_list_old=net_cmpnd_list_old, net_instnc_list_old=net_instnc_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> dict:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		return {'name': 'ndcfg.net_cmpnd2instnc.update', 'new': _denullify_dict({'net_cmpnd': net_cmpnd_new, 'net_instnc': net_instnc_new}), 'old': _denullify_dict({'net_cmpnd': net_cmpnd_old, 'net_instnc': net_instnc_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, net_cmpnd_old: str, net_instnc_old: str, net_cmpnd_new: str = None, net_instnc_new: str = None) -> list:
-		if net_cmpnd_new is not None and not (isinstance(net_cmpnd_new, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_new)}")
-		if net_instnc_new is not None and not (isinstance(net_instnc_new, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_new)}")
-		if not (isinstance(net_cmpnd_old, str)):
-			raise ValueError(f"'net_cmpnd' of incorrect type. Expected str, got {type(net_cmpnd_old)}")
-		if not (isinstance(net_instnc_old, str)):
-			raise ValueError(f"'net_instnc' of incorrect type. Expected str, got {type(net_instnc_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(net_cmpnd_new=net_cmpnd_new, net_instnc_new=net_instnc_new, net_cmpnd_old=net_cmpnd_old, net_instnc_old=net_instnc_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Parser2sysdescr(APIObject):
-	gpk: str
-	parser: str
-	sysdescr: str
-	is_executable: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.parser, str):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(self.parser)}")
-		if not isinstance(self.sysdescr, str):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(self.sysdescr)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-
-	@staticmethod
-	def create_ta(parser_new: str, sysdescr_new: str) -> dict:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.create', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, parser_new: str, sysdescr_new: str) -> list:
-		if not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(sysdescr_old: str) -> dict:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, sysdescr_old: str) -> list:
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(parser_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, sysdescr_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if sysdescr_list_old is not None and not (isinstance(sysdescr_list_old, list)):
-			raise ValueError(f"'sysdescr_list' of incorrect type. Expected list, got {type(sysdescr_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'parser': parser_old, 'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'sysdescr_list': sysdescr_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, parser_old: str = None, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, sysdescr_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if parser_old is not None and not (isinstance(parser_old, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if sysdescr_list_old is not None and not (isinstance(sysdescr_list_old, list)):
-			raise ValueError(f"'sysdescr_list' of incorrect type. Expected list, got {type(sysdescr_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(parser_old=parser_old, gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, sysdescr_list_old=sysdescr_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> dict:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		return {'name': 'ndcfg.parser2sysdescr.update', 'new': _denullify_dict({'parser': parser_new, 'sysdescr': sysdescr_new}), 'old': _denullify_dict({'sysdescr': sysdescr_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, sysdescr_old: str, parser_new: str = None, sysdescr_new: str = None) -> list:
-		if parser_new is not None and not (isinstance(parser_new, str)):
-			raise ValueError(f"'parser' of incorrect type. Expected str, got {type(parser_new)}")
-		if sysdescr_new is not None and not (isinstance(sysdescr_new, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_new)}")
-		if not (isinstance(sysdescr_old, str)):
-			raise ValueError(f"'sysdescr' of incorrect type. Expected str, got {type(sysdescr_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(parser_new=parser_new, sysdescr_new=sysdescr_new, sysdescr_old=sysdescr_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SlotTypeClass(APIObject):
-	gpk: str
-	name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-
-	@staticmethod
-	def create_ta(name_new: str) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		return {'name': 'ndcfg.slot_type_class.create', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(name_old: str) -> dict:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, name_old: str) -> list:
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(name_old: str, name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		return {'name': 'ndcfg.slot_type_class.update', 'new': _denullify_dict({'name': name_new}), 'old': _denullify_dict({'name': name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, name_old: str, name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, name_old=name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Slot2moduleTypeTree(APIObject):
-	gpk: str
-	slot_type: str
-	parent_gfk: str
-	tree_level: int
-	module_type: str
-	slot_varname1: str
-	subport_prefix: str
-	subport_varprfx: str
-	subport_varname1: str
-	hierarchy_gfk_list: list
-	subport_varprfx_join_dl: str
-	subport_varprfx_split_dl: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.slot_type, str):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(self.slot_type)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.module_type, str):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(self.module_type)}")
-		if self.slot_varname1 is not None and not isinstance(self.slot_varname1, str):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(self.slot_varname1)}")
-		if self.subport_prefix is not None and not isinstance(self.subport_prefix, str):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(self.subport_prefix)}")
-		if self.subport_varprfx is not None and not isinstance(self.subport_varprfx, str):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(self.subport_varprfx)}")
-		if self.subport_varname1 is not None and not isinstance(self.subport_varname1, str):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(self.subport_varname1)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-		if self.subport_varprfx_join_dl is not None and not isinstance(self.subport_varprfx_join_dl, str):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_join_dl)}")
-		if self.subport_varprfx_split_dl is not None and not isinstance(self.subport_varprfx_split_dl, str):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(self.subport_varprfx_split_dl)}")
-
-	@staticmethod
-	def create_ta(slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.create', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, slot_type_new: str, module_type_new: str, parent_gfk_new: Union[str, ExplicitNull] = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(gpk_old: str) -> dict:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, gpk_old: str) -> list:
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, parent_gfk_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if parent_gfk_list_old is not None and not (isinstance(parent_gfk_list_old, list)):
-			raise ValueError(f"'parent_gfk_list' of incorrect type. Expected list, got {type(parent_gfk_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'slot_type_list': slot_type_list_old, 'parent_gfk_list': parent_gfk_list_old, 'module_type_list': module_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, fetch_offset_old: int = None, slot_type_list_old: list = None, parent_gfk_list_old: list = None, module_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if slot_type_list_old is not None and not (isinstance(slot_type_list_old, list)):
-			raise ValueError(f"'slot_type_list' of incorrect type. Expected list, got {type(slot_type_list_old)}")
-		if parent_gfk_list_old is not None and not (isinstance(parent_gfk_list_old, list)):
-			raise ValueError(f"'parent_gfk_list' of incorrect type. Expected list, got {type(parent_gfk_list_old)}")
-		if module_type_list_old is not None and not (isinstance(module_type_list_old, list)):
-			raise ValueError(f"'module_type_list' of incorrect type. Expected list, got {type(module_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, slot_type_list_old=slot_type_list_old, parent_gfk_list_old=parent_gfk_list_old, module_type_list_old=module_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> dict:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		return {'name': 'ndcfg.slot2module_type_tree.update', 'new': _denullify_dict({'slot_type': slot_type_new, 'parent_gfk': parent_gfk_new, 'module_type': module_type_new, 'slot_varname1': slot_varname1_new, 'subport_prefix': subport_prefix_new, 'subport_varprfx': subport_varprfx_new, 'subport_varname1': subport_varname1_new, 'subport_varprfx_join_dl': subport_varprfx_join_dl_new, 'subport_varprfx_split_dl': subport_varprfx_split_dl_new}), 'old': _denullify_dict({'gpk': gpk_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, gpk_old: str, slot_type_new: str = None, parent_gfk_new: Union[str, ExplicitNull] = None, module_type_new: str = None, slot_varname1_new: Union[str, ExplicitNull] = None, subport_prefix_new: Union[str, ExplicitNull] = None, subport_varprfx_new: Union[str, ExplicitNull] = None, subport_varname1_new: Union[str, ExplicitNull] = None, subport_varprfx_join_dl_new: Union[str, ExplicitNull] = None, subport_varprfx_split_dl_new: Union[str, ExplicitNull] = None) -> list:
-		if slot_type_new is not None and not (isinstance(slot_type_new, str)):
-			raise ValueError(f"'slot_type' of incorrect type. Expected str, got {type(slot_type_new)}")
-		if parent_gfk_new is not None and not (isinstance(parent_gfk_new, str) or isinstance(parent_gfk_new, ExplicitNull)):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(parent_gfk_new)}")
-		if module_type_new is not None and not (isinstance(module_type_new, str)):
-			raise ValueError(f"'module_type' of incorrect type. Expected str, got {type(module_type_new)}")
-		if slot_varname1_new is not None and not (isinstance(slot_varname1_new, str) or isinstance(slot_varname1_new, ExplicitNull)):
-			raise ValueError(f"'slot_varname1' of incorrect type. Expected str, got {type(slot_varname1_new)}")
-		if subport_prefix_new is not None and not (isinstance(subport_prefix_new, str) or isinstance(subport_prefix_new, ExplicitNull)):
-			raise ValueError(f"'subport_prefix' of incorrect type. Expected str, got {type(subport_prefix_new)}")
-		if subport_varprfx_new is not None and not (isinstance(subport_varprfx_new, str) or isinstance(subport_varprfx_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx' of incorrect type. Expected str, got {type(subport_varprfx_new)}")
-		if subport_varname1_new is not None and not (isinstance(subport_varname1_new, str) or isinstance(subport_varname1_new, ExplicitNull)):
-			raise ValueError(f"'subport_varname1' of incorrect type. Expected str, got {type(subport_varname1_new)}")
-		if subport_varprfx_join_dl_new is not None and not (isinstance(subport_varprfx_join_dl_new, str) or isinstance(subport_varprfx_join_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_join_dl' of incorrect type. Expected str, got {type(subport_varprfx_join_dl_new)}")
-		if subport_varprfx_split_dl_new is not None and not (isinstance(subport_varprfx_split_dl_new, str) or isinstance(subport_varprfx_split_dl_new, ExplicitNull)):
-			raise ValueError(f"'subport_varprfx_split_dl' of incorrect type. Expected str, got {type(subport_varprfx_split_dl_new)}")
-		if not (isinstance(gpk_old, str)):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(gpk_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(slot_type_new=slot_type_new, parent_gfk_new=parent_gfk_new, module_type_new=module_type_new, slot_varname1_new=slot_varname1_new, subport_prefix_new=subport_prefix_new, subport_varprfx_new=subport_varprfx_new, subport_varname1_new=subport_varname1_new, subport_varprfx_join_dl_new=subport_varprfx_join_dl_new, subport_varprfx_split_dl_new=subport_varprfx_split_dl_new, gpk_old=gpk_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType(APIObject):
-	gpk: str
-	is_child: bool
-	is_parent: bool
-	short_name: str
-	force_is_child: bool
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.is_child, bool):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(self.is_child)}")
-		if not isinstance(self.is_parent, bool):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(self.is_parent)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.force_is_child, bool):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(self.force_is_child)}")
-
-	@staticmethod
-	def create_ta(is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> dict:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		return {'name': 'ndcfg.site_type.create', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, is_child_new: bool, is_parent_new: bool, short_name_new: str, force_is_child_new: bool) -> list:
-		if not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, is_child_old: bool = None, is_parent_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.site_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'is_child': is_child_old, 'is_parent': is_parent_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'force_is_child': force_is_child_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, is_child_old: bool = None, is_parent_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, force_is_child_old: bool = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if is_child_old is not None and not (isinstance(is_child_old, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_old)}")
-		if is_parent_old is not None and not (isinstance(is_parent_old, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if force_is_child_old is not None and not (isinstance(force_is_child_old, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, is_child_old=is_child_old, is_parent_old=is_parent_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, force_is_child_old=force_is_child_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> dict:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'ndcfg.site_type.update', 'new': _denullify_dict({'is_child': is_child_new, 'is_parent': is_parent_new, 'short_name': short_name_new, 'force_is_child': force_is_child_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, is_child_new: bool = None, is_parent_new: bool = None, short_name_new: str = None, force_is_child_new: bool = None) -> list:
-		if is_child_new is not None and not (isinstance(is_child_new, bool)):
-			raise ValueError(f"'is_child' of incorrect type. Expected bool, got {type(is_child_new)}")
-		if is_parent_new is not None and not (isinstance(is_parent_new, bool)):
-			raise ValueError(f"'is_parent' of incorrect type. Expected bool, got {type(is_parent_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if force_is_child_new is not None and not (isinstance(force_is_child_new, bool)):
-			raise ValueError(f"'force_is_child' of incorrect type. Expected bool, got {type(force_is_child_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(is_child_new=is_child_new, is_parent_new=is_parent_new, short_name_new=short_name_new, force_is_child_new=force_is_child_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class SiteType2type(APIObject):
-	gpk: str
-	child_short_name: str
-	parent_short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.child_short_name, str):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(self.child_short_name)}")
-		if not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-
-	@staticmethod
-	def create_ta(child_short_name_new: str, parent_short_name_new: str) -> dict:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'ndcfg.site_type2type.create', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, child_short_name_new: str, parent_short_name_new: str) -> list:
-		if not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(child_short_name_old: str, parent_short_name_old: str) -> dict:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str) -> list:
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, child_short_name_list_old: list = None, parent_short_name_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if child_short_name_list_old is not None and not (isinstance(child_short_name_list_old, list)):
-			raise ValueError(f"'child_short_name_list' of incorrect type. Expected list, got {type(child_short_name_list_old)}")
-		if parent_short_name_list_old is not None and not (isinstance(parent_short_name_list_old, list)):
-			raise ValueError(f"'parent_short_name_list' of incorrect type. Expected list, got {type(parent_short_name_list_old)}")
-
-		return {'name': 'ndcfg.site_type2type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'child_short_name_list': child_short_name_list_old, 'parent_short_name_list': parent_short_name_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, child_short_name_list_old: list = None, parent_short_name_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if child_short_name_list_old is not None and not (isinstance(child_short_name_list_old, list)):
-			raise ValueError(f"'child_short_name_list' of incorrect type. Expected list, got {type(child_short_name_list_old)}")
-		if parent_short_name_list_old is not None and not (isinstance(parent_short_name_list_old, list)):
-			raise ValueError(f"'parent_short_name_list' of incorrect type. Expected list, got {type(parent_short_name_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, child_short_name_list_old=child_short_name_list_old, parent_short_name_list_old=parent_short_name_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> dict:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		return {'name': 'ndcfg.site_type2type.update', 'new': _denullify_dict({'child_short_name': child_short_name_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'child_short_name': child_short_name_old, 'parent_short_name': parent_short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, child_short_name_old: str, parent_short_name_old: str, child_short_name_new: str = None, parent_short_name_new: str = None) -> list:
-		if child_short_name_new is not None and not (isinstance(child_short_name_new, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(child_short_name_old, str)):
-			raise ValueError(f"'child_short_name' of incorrect type. Expected str, got {type(child_short_name_old)}")
-		if not (isinstance(parent_short_name_old, str)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(child_short_name_new=child_short_name_new, parent_short_name_new=parent_short_name_new, child_short_name_old=child_short_name_old, parent_short_name_old=parent_short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class LPortTag(APIObject):
-	gpk: str
-	value: str
-	level_list: list
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-		if not isinstance(self.level_list, list):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(self.level_list)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def create_ta(value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		return {'name': 'ndcfg.l_port_tag.create', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, value_new: str, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(value_old: str) -> dict:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, value_old: str) -> list:
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'value_list': value_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, value_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if value_list_old is not None and not (isinstance(value_list_old, list)):
-			raise ValueError(f"'value_list' of incorrect type. Expected list, got {type(value_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, value_list_old=value_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> dict:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		return {'name': 'ndcfg.l_port_tag.update', 'new': _denullify_dict({'value': value_new, 'level_list': level_list_new, 'description': description_new}), 'old': _denullify_dict({'value': value_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, value_old: str, value_new: str = None, level_list_new: list = None, description_new: Union[str, ExplicitNull] = None) -> list:
-		if value_new is not None and not (isinstance(value_new, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_new)}")
-		if level_list_new is not None and not (isinstance(level_list_new, list)):
-			raise ValueError(f"'level_list' of incorrect type. Expected list, got {type(level_list_new)}")
-		if description_new is not None and not (isinstance(description_new, str) or isinstance(description_new, ExplicitNull)):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(description_new)}")
-		if not (isinstance(value_old, str)):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(value_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(value_new=value_new, level_list_new=level_list_new, description_new=description_new, value_old=value_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/nm.py b/4.2/golang/nm.py
deleted file mode 100644
index ae120fa..0000000
--- a/4.2/golang/nm.py
+++ /dev/null
@@ -1,58 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class AccessGroup(APIObject):
-	gpk: str
-	name: str
-	description: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if self.description is not None and not isinstance(self.description, str):
-			raise ValueError(f"'description' of incorrect type. Expected str, got {type(self.description)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'nm.access_group.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/org.py b/4.2/golang/org.py
deleted file mode 100644
index 5bdeb0d..0000000
--- a/4.2/golang/org.py
+++ /dev/null
@@ -1,330 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class UnitType(APIObject):
-	gpk: str
-	name: str
-	position: int
-	short_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.position, int):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(self.position)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-
-	@staticmethod
-	def create_ta(name_new: str, short_name_new: str, position_new: int = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		return {'name': 'org.unit_type.create', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, short_name_new: str, position_new: int = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str) -> dict:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str) -> list:
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, short_name_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit_type.update', 'new': _denullify_dict({'name': name_new, 'position': position_new, 'short_name': short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, position_new: int = None, short_name_new: str = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if position_new is not None and not (isinstance(position_new, int)):
-			raise ValueError(f"'position' of incorrect type. Expected int, got {type(position_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, position_new=position_new, short_name_new=short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Unit(APIObject):
-	gpk: str
-	name: str
-	type: str
-	parent_gfk: str
-	short_name: str
-	tree_level: int
-	sub_position: int
-	is_mgr_assignable: bool
-	parent_short_name: str
-	hierarchy_gfk_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.type, str):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(self.type)}")
-		if self.parent_gfk is not None and not isinstance(self.parent_gfk, str):
-			raise ValueError(f"'parent_gfk' of incorrect type. Expected str, got {type(self.parent_gfk)}")
-		if not isinstance(self.short_name, str):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(self.short_name)}")
-		if not isinstance(self.tree_level, int):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(self.tree_level)}")
-		if not isinstance(self.sub_position, int):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(self.sub_position)}")
-		if not isinstance(self.is_mgr_assignable, bool):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(self.is_mgr_assignable)}")
-		if self.parent_short_name is not None and not isinstance(self.parent_short_name, str):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(self.parent_short_name)}")
-		if not isinstance(self.hierarchy_gfk_list, list):
-			raise ValueError(f"'hierarchy_gfk_list' of incorrect type. Expected list, got {type(self.hierarchy_gfk_list)}")
-
-	@staticmethod
-	def create_ta(name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		return {'name': 'org.unit.create', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, name_new: str, type_new: str, short_name_new: str, sub_position_new: int = None, is_mgr_assignable_new: bool = True, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(short_name_old: str, merge_short_name_new: str = None) -> dict:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.delete', 'new': _denullify_dict({'merge_short_name': merge_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, short_name_old: str, merge_short_name_new: str = None) -> list:
-		if merge_short_name_new is not None and not (isinstance(merge_short_name_new, str)):
-			raise ValueError(f"'merge_short_name' of incorrect type. Expected str, got {type(merge_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(merge_short_name_new=merge_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(type_old: str = None, gpk_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'org.unit.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'type': type_old, 'gpk_list': gpk_list_old, 'tree_level': tree_level_old, 'fetch_limit': fetch_limit_old, 'name_regexp': name_regexp_old, 'fetch_offset': fetch_offset_old, 'short_name_list': short_name_list_old, 'is_mgr_assignable': is_mgr_assignable_old, 'short_name_regexp': short_name_regexp_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, type_old: str = None, gpk_list_old: list = None, tree_level_old: int = None, fetch_limit_old: int = None, name_regexp_old: str = None, fetch_offset_old: int = None, short_name_list_old: list = None, is_mgr_assignable_old: bool = None, short_name_regexp_old: str = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if type_old is not None and not (isinstance(type_old, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_old)}")
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if tree_level_old is not None and not (isinstance(tree_level_old, int)):
-			raise ValueError(f"'tree_level' of incorrect type. Expected int, got {type(tree_level_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if name_regexp_old is not None and not (isinstance(name_regexp_old, str)):
-			raise ValueError(f"'name_regexp' of incorrect type. Expected str, got {type(name_regexp_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if short_name_list_old is not None and not (isinstance(short_name_list_old, list)):
-			raise ValueError(f"'short_name_list' of incorrect type. Expected list, got {type(short_name_list_old)}")
-		if is_mgr_assignable_old is not None and not (isinstance(is_mgr_assignable_old, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_old)}")
-		if short_name_regexp_old is not None and not (isinstance(short_name_regexp_old, str)):
-			raise ValueError(f"'short_name_regexp' of incorrect type. Expected str, got {type(short_name_regexp_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(type_old=type_old, gpk_list_old=gpk_list_old, tree_level_old=tree_level_old, fetch_limit_old=fetch_limit_old, name_regexp_old=name_regexp_old, fetch_offset_old=fetch_offset_old, short_name_list_old=short_name_list_old, is_mgr_assignable_old=is_mgr_assignable_old, short_name_regexp_old=short_name_regexp_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> dict:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		return {'name': 'org.unit.update', 'new': _denullify_dict({'name': name_new, 'type': type_new, 'short_name': short_name_new, 'sub_position': sub_position_new, 'is_mgr_assignable': is_mgr_assignable_new, 'parent_short_name': parent_short_name_new}), 'old': _denullify_dict({'short_name': short_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, short_name_old: str, name_new: str = None, type_new: str = None, short_name_new: str = None, sub_position_new: int = None, is_mgr_assignable_new: bool = None, parent_short_name_new: Union[str, ExplicitNull] = None) -> list:
-		if name_new is not None and not (isinstance(name_new, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_new)}")
-		if type_new is not None and not (isinstance(type_new, str)):
-			raise ValueError(f"'type' of incorrect type. Expected str, got {type(type_new)}")
-		if short_name_new is not None and not (isinstance(short_name_new, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_new)}")
-		if sub_position_new is not None and not (isinstance(sub_position_new, int)):
-			raise ValueError(f"'sub_position' of incorrect type. Expected int, got {type(sub_position_new)}")
-		if is_mgr_assignable_new is not None and not (isinstance(is_mgr_assignable_new, bool)):
-			raise ValueError(f"'is_mgr_assignable' of incorrect type. Expected bool, got {type(is_mgr_assignable_new)}")
-		if parent_short_name_new is not None and not (isinstance(parent_short_name_new, str) or isinstance(parent_short_name_new, ExplicitNull)):
-			raise ValueError(f"'parent_short_name' of incorrect type. Expected str, got {type(parent_short_name_new)}")
-		if not (isinstance(short_name_old, str)):
-			raise ValueError(f"'short_name' of incorrect type. Expected str, got {type(short_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(name_new=name_new, type_new=type_new, short_name_new=short_name_new, sub_position_new=sub_position_new, is_mgr_assignable_new=is_mgr_assignable_new, parent_short_name_new=parent_short_name_new, short_name_old=short_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/structs.go b/4.2/golang/structs.go
new file mode 100644
index 0000000..098512d
--- /dev/null
+++ b/4.2/golang/structs.go
@@ -0,0 +1,1369 @@
+import "net"
+
+type NdcfgModule2slotType struct {
+	Gpk               string `mapstructure:"gpk"`
+	SlotType          string `mapstructure:"slot_type"`
+	ModuleType        string `mapstructure:"module_type"`
+	NumModeName       string `mapstructure:"num_mode_name"`
+	NumModeLevel      int64  `mapstructure:"num_mode_level"`
+	RequiredSlotWidth int64  `mapstructure:"required_slot_width"`
+}
+
+type NdcfgModuleTypeClass struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type DnsZone struct {
+	Gpk                      string  `mapstructure:"gpk"`
+	Fqdn                     string  `mapstructure:"fqdn"`
+	IsOwn                    bool    `mapstructure:"is_own"`
+	IsApex                   bool    `mapstructure:"is_apex"`
+	Nsec3Salt                *string `mapstructure:"nsec3_salt"`
+	Description              *string `mapstructure:"description"`
+	NsSetName                *string `mapstructure:"ns_set_name"`
+	Nsec3Itcount             int64   `mapstructure:"nsec3_itcount"`
+	DnssecDoSign             bool    `mapstructure:"dnssec_do_sign"`
+	SoaDataRetry             *uint32 `mapstructure:"soa_data_retry"`
+	Nsec3HashAlgo            int64   `mapstructure:"nsec3_hash_algo"`
+	SoaDataExpire            *uint32 `mapstructure:"soa_data_expire"`
+	SoaDataSerial            uint32  `mapstructure:"soa_data_serial"`
+	SoaDataMinimum           *uint32 `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh           *uint32 `mapstructure:"soa_data_refresh"`
+	DnssecDoEnforce          bool    `mapstructure:"dnssec_do_enforce"`
+	DfltTtlRrtDbext          uint32  `mapstructure:"dflt_ttl_rrt_dbext"`
+	DfltTtlRrtDbint          uint32  `mapstructure:"dflt_ttl_rrt_dbint"`
+	SoaDataHostmaster        *string `mapstructure:"soa_data_hostmaster"`
+	DnssecKskRrsArePublished bool    `mapstructure:"dnssec_ksk_rrs_are_published"`
+}
+
+type NdcfgPPortProto struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlSystem struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr struct {
+	Gpk                   string  `mapstructure:"gpk"`
+	Email                 *string `mapstructure:"email"`
+	IsOwn                 bool    `mapstructure:"is_own"`
+	IsSub                 bool    `mapstructure:"is_sub"`
+	IsSvc                 bool    `mapstructure:"is_svc"`
+	SubId                 *string `mapstructure:"sub_id"`
+	SvcId                 *string `mapstructure:"svc_id"`
+	IsSelf                bool    `mapstructure:"is_self"`
+	LastName              *string `mapstructure:"last_name"`
+	FirstName             *string `mapstructure:"first_name"`
+	KitStatus             int64   `mapstructure:"kit_status"`
+	LoginName             string  `mapstructure:"login_name"`
+	Description           *string `mapstructure:"description"`
+	IsDeletable           bool    `mapstructure:"is_deletable"`
+	IsAdmLocked           bool    `mapstructure:"is_adm_locked"`
+	ParentLoginName       string  `mapstructure:"parent_login_name"`
+	AllowDataManipulation bool    `mapstructure:"allow_data_manipulation"`
+}
+
+type NdIpSubnet struct {
+	Bcd                 string      `mapstructure:"bcd"`
+	Gpk                 string      `mapstructure:"gpk"`
+	Cidr                net.IPNet   `mapstructure:"cidr"`
+	Type                string      `mapstructure:"type"`
+	IsOwn               bool        `mapstructure:"is_own"`
+	IsPrivate           bool        `mapstructure:"is_private"`
+	Description         *string     `mapstructure:"description"`
+	IsRoutable          bool        `mapstructure:"is_routable"`
+	IsContainer         bool        `mapstructure:"is_container"`
+	DefaultGateway      *net.IPAddr `mapstructure:"default_gateway"`
+	IsIanaRegistered    bool        `mapstructure:"is_iana_registered"`
+	AutoCreateIpAddress bool        `mapstructure:"auto_create_ip_address"`
+}
+
+type NdcfgPPort2moduleType struct {
+	Gpk                    string  `mapstructure:"gpk"`
+	IntGfk                 string  `mapstructure:"int_gfk"`
+	PortType               string  `mapstructure:"port_type"`
+	PortCount              int64   `mapstructure:"port_count"`
+	PortName1              *string `mapstructure:"port_name1"`
+	PortProto              string  `mapstructure:"port_proto"`
+	PortSpeed              string  `mapstructure:"port_speed"`
+	ModuleType             string  `mapstructure:"module_type"`
+	NumModeName            string  `mapstructure:"num_mode_name"`
+	NumModeLevel           int64   `mapstructure:"num_mode_level"`
+	PortIncCount           int64   `mapstructure:"port_inc_count"`
+	PortTypeGroup          string  `mapstructure:"port_type_group"`
+	PortTypeOrder          int64   `mapstructure:"port_type_order"`
+	PortNamePrefix         *string `mapstructure:"port_name_prefix"`
+	PortNameSuffix         *string `mapstructure:"port_name_suffix"`
+	PortNameVarprfx        *string `mapstructure:"port_name_varprfx"`
+	PortNameVarprfxJoinDl  *string `mapstructure:"port_name_varprfx_join_dl"`
+	PortNameVarprfxSplitDl *string `mapstructure:"port_name_varprfx_split_dl"`
+}
+
+type CntlError struct {
+	Gpk    string `mapstructure:"gpk"`
+	Code   int64  `mapstructure:"code"`
+	Type   int64  `mapstructure:"type"`
+	System string `mapstructure:"system"`
+}
+
+type DnsFqdn struct {
+	Gpk                        string    `mapstructure:"gpk"`
+	Type                       string    `mapstructure:"type"`
+	Zone                       string    `mapstructure:"zone"`
+	Label                      *string   `mapstructure:"label"`
+	Value                      string    `mapstructure:"value"`
+	IsOwn                      bool      `mapstructure:"is_own"`
+	LabelIdna                  *string   `mapstructure:"label_idna"`
+	ParentGfk                  *string   `mapstructure:"parent_gfk"`
+	TreeLevel                  int32     `mapstructure:"tree_level"`
+	ValueIdna                  string    `mapstructure:"value_idna"`
+	Description                *string   `mapstructure:"description"`
+	ParentValue                *string   `mapstructure:"parent_value"`
+	TypeIsDhcp                 bool      `mapstructure:"type_is_dhcp"`
+	TypeIsHost                 bool      `mapstructure:"type_is_host"`
+	TypeRadType                int64     `mapstructure:"type_rad_type"`
+	TypeIsWildcard             bool      `mapstructure:"type_is_wildcard"`
+	HierarchyGfkList           []string  `mapstructure:"hierarchy_gfk_list"`
+	TypeIsNonterminal          bool      `mapstructure:"type_is_nonterminal"`
+	IsEmptyNonterminal         bool      `mapstructure:"is_empty_nonterminal"`
+	RrChainTargetIsOwn         bool      `mapstructure:"rr_chain_target_is_own"`
+	RrChainTargetSubnetGfkList *[]string `mapstructure:"rr_chain_target_subnet_gfk_list"`
+}
+
+type NdcfgSlot2moduleType struct {
+	Gpk                string  `mapstructure:"gpk"`
+	SlotType           string  `mapstructure:"slot_type"`
+	ModuleType         string  `mapstructure:"module_type"`
+	NumModeName        string  `mapstructure:"num_mode_name"`
+	SubslotCount       int64   `mapstructure:"subslot_count"`
+	SubslotName1       *string `mapstructure:"subslot_name1"`
+	NumModeLevel       int64   `mapstructure:"num_mode_level"`
+	SubslotPrefix      *string `mapstructure:"subslot_prefix"`
+	SubslotIncCount    int64   `mapstructure:"subslot_inc_count"`
+	SubslotTypeOrder   int64   `mapstructure:"subslot_type_order"`
+	BackplanePortDescr *string `mapstructure:"backplane_port_descr"`
+}
+
+type NdSlot struct {
+	Gpk            string  `mapstructure:"gpk"`
+	Bldg           *string `mapstructure:"bldg"`
+	Room           *string `mapstructure:"room"`
+	Type           string  `mapstructure:"type"`
+	Label          string  `mapstructure:"label"`
+	FqName         string  `mapstructure:"fq_name"`
+	Description    *string `mapstructure:"description"`
+	LabelSortby    string  `mapstructure:"label_sortby"`
+	ParentFqModule string  `mapstructure:"parent_fq_module"`
+	SubModuleCount int64   `mapstructure:"sub_module_count"`
+}
+
+type NdFloor struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+	NameSortby  int64   `mapstructure:"name_sortby"`
+}
+
+type NdRoom struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Bldg        string  `mapstructure:"bldg"`
+	Name        string  `mapstructure:"name"`
+	Floor       string  `mapstructure:"floor"`
+	Number      string  `mapstructure:"number"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlColumn struct {
+	Gpk                            string  `mapstructure:"gpk"`
+	Name                           string  `mapstructure:"name"`
+	IsWapi                         bool    `mapstructure:"is_wapi"`
+	RefGfk                         *string `mapstructure:"ref_gfk"`
+	DataType                       string  `mapstructure:"data_type"`
+	TableGfk                       string  `mapstructure:"table_gfk"`
+	TableName                      string  `mapstructure:"table_name"`
+	IsNullable                     bool    `mapstructure:"is_nullable"`
+	IsRequired                     bool    `mapstructure:"is_required"`
+	IsDeprecated                   bool    `mapstructure:"is_deprecated"`
+	AttributeName                  string  `mapstructure:"attribute_name"`
+	RefTargetGfk                   *string `mapstructure:"ref_target_gfk"`
+	IsOtGlobalRef                  bool    `mapstructure:"is_ot_global_ref"`
+	ObjectTypeFqName               string  `mapstructure:"object_type_fq_name"`
+	PgAttributeExists              bool    `mapstructure:"pg_attribute_exists"`
+	UseRefColumnLanguageAttributes bool    `mapstructure:"use_ref_column_language_attributes"`
+}
+
+type NdModule struct {
+	Ap                     *string  `mapstructure:"ap"`
+	Gpk                    string   `mapstructure:"gpk"`
+	Bldg                   *string  `mapstructure:"bldg"`
+	Room                   *string  `mapstructure:"room"`
+	Type                   string   `mapstructure:"type"`
+	Label                  string   `mapstructure:"label"`
+	FqName                 string   `mapstructure:"fq_name"`
+	IsChild                bool     `mapstructure:"is_child"`
+	RootGfk                string   `mapstructure:"root_gfk"`
+	IsActive               bool     `mapstructure:"is_active"`
+	TreeLevel              int32    `mapstructure:"tree_level"`
+	Description            *string  `mapstructure:"description"`
+	HasUnqName             bool     `mapstructure:"has_unq_name"`
+	IsLocDepdnt            bool     `mapstructure:"is_loc_depdnt"`
+	ParentFqSlot           *string  `mapstructure:"parent_fq_slot"`
+	ModuleHierarchyGfkList []string `mapstructure:"module_hierarchy_gfk_list"`
+}
+
+type NdcfgPPortType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	IsInternal bool   `mapstructure:"is_internal"`
+}
+
+type NdcfgSlotType struct {
+	Gpk        string `mapstructure:"gpk"`
+	Name       string `mapstructure:"name"`
+	Class      string `mapstructure:"class"`
+	SlotWidth  int64  `mapstructure:"slot_width"`
+	SubmtCount int64  `mapstructure:"submt_count"`
+}
+
+type NdcfgPPortTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	IsPermanent bool   `mapstructure:"is_permanent"`
+}
+
+type NmAccessGroup struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVlanEgress struct {
+	Gpk      string `mapstructure:"gpk"`
+	VlanGfk  string `mapstructure:"vlan_gfk"`
+	IsTagged bool   `mapstructure:"is_tagged"`
+	LPortGfk string `mapstructure:"l_port_gfk"`
+}
+
+type NdcfgNetInstnc struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type CntlConstraint struct {
+	Gpk                             string   `mapstructure:"gpk"`
+	Name                            string   `mapstructure:"name"`
+	Type                            string   `mapstructure:"type"`
+	RefName                         *string  `mapstructure:"ref_name"`
+	DblvlName                       *string  `mapstructure:"dblvl_name"`
+	TableName                       string   `mapstructure:"table_name"`
+	IsFunction                      bool     `mapstructure:"is_function"`
+	IsApiLevel                      bool     `mapstructure:"is_api_level"`
+	ColNameList                     []string `mapstructure:"col_name_list"`
+	JoinOperator                    string   `mapstructure:"join_operator"`
+	IsReferencing                   bool     `mapstructure:"is_referencing"`
+	IsJoinDefault                   bool     `mapstructure:"is_join_default"`
+	DblvlTableName                  *string  `mapstructure:"dblvl_table_name"`
+	IsReferenceable                 bool     `mapstructure:"is_referenceable"`
+	ColDataTypeList                 []string `mapstructure:"col_data_type_list"`
+	JoinOperandsExchange            bool     `mapstructure:"join_operands_exchange"`
+	JoinGrantsReadAccessFromChild   bool     `mapstructure:"join_grants_read_access_from_child"`
+	JoinLeftFunctionFormatTemplate  string   `mapstructure:"join_left_function_format_template"`
+	JoinGrantsReadAccessFromParent  bool     `mapstructure:"join_grants_read_access_from_parent"`
+	JoinRightFunctionFormatTemplate string   `mapstructure:"join_right_function_format_template"`
+}
+
+type NdcfgPPortTypeData struct {
+	Gpk       string `mapstructure:"gpk"`
+	PortType  string `mapstructure:"port_type"`
+	PortGroup string `mapstructure:"port_group"`
+	PortProto string `mapstructure:"port_proto"`
+	PortSpeed string `mapstructure:"port_speed"`
+}
+
+type CntlErrorType struct {
+	Gpk  string `mapstructure:"gpk"`
+	Code int64  `mapstructure:"code"`
+	Name string `mapstructure:"name"`
+}
+
+type NdBldg struct {
+	Gpk         string              `mapstructure:"gpk"`
+	Name        string              `mapstructure:"name"`
+	Number      string              `mapstructure:"number"`
+	Street      *string             `mapstructure:"street"`
+	PostalCode  *int64              `mapstructure:"postal_code"`
+	GeoLocation *map[string]float64 `mapstructure:"geo_location"`
+	SiteFqName  string              `mapstructure:"site_fq_name"`
+}
+
+type NdcfgModuleType struct {
+	Gpk          string `mapstructure:"gpk"`
+	Name         string `mapstructure:"name"`
+	Class        string `mapstructure:"class"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsActive     bool   `mapstructure:"is_active"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	HasUnqName   bool   `mapstructure:"has_unq_name"`
+	IsForwarding bool   `mapstructure:"is_forwarding"`
+	IsLocDepdnt  bool   `mapstructure:"is_loc_depdnt"`
+}
+
+type CntlTable struct {
+	Gpk                        string `mapstructure:"gpk"`
+	Name                       string `mapstructure:"name"`
+	System                     string `mapstructure:"system"`
+	IsLogDst                   bool   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool   `mapstructure:"is_log_src"`
+	IsLangDst                  bool   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool   `mapstructure:"is_lang_src"`
+	IsOtattrDst                bool   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool   `mapstructure:"is_otattr_src"`
+	ContentGender              string `mapstructure:"content_gender"`
+	PgClassExists              bool   `mapstructure:"pg_class_exists"`
+	ObjectTypeFqName           string `mapstructure:"object_type_fq_name"`
+	DoActivateGlobalPk2obj     bool   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool   `mapstructure:"object_type_grants_read_access"`
+}
+
+type NdPPort struct {
+	Gpk                  string   `mapstructure:"gpk"`
+	Name                 string   `mapstructure:"name"`
+	Type                 string   `mapstructure:"type"`
+	Speed                string   `mapstructure:"speed"`
+	IsNnl                bool     `mapstructure:"is_nnl"`
+	MdlBldg              *string  `mapstructure:"mdl_bldg"`
+	MdlRoom              *string  `mapstructure:"mdl_room"`
+	MdlType              string   `mapstructure:"mdl_type"`
+	Protocol             string   `mapstructure:"protocol"`
+	ModuleGfk            string   `mapstructure:"module_gfk"`
+	TypeGroup            string   `mapstructure:"type_group"`
+	Description          *string  `mapstructure:"description"`
+	MdlFqName            string   `mapstructure:"mdl_fq_name"`
+	NameSortby           string   `mapstructure:"name_sortby"`
+	TypeSortby           int64    `mapstructure:"type_sortby"`
+	IsConnected          bool     `mapstructure:"is_connected"`
+	IsDefective          bool     `mapstructure:"is_defective"`
+	IsEdgeNode           bool     `mapstructure:"is_edge_node"`
+	ConnectedGfk         string   `mapstructure:"connected_gfk"`
+	ConnectedName        *string  `mapstructure:"connected_name"`
+	ModuleTypeGfk        string   `mapstructure:"module_type_gfk"`
+	ConnectedMdlBldg     *string  `mapstructure:"connected_mdl_bldg"`
+	ConnectedMdlRoom     *string  `mapstructure:"connected_mdl_room"`
+	DestConnectedGfk     string   `mapstructure:"dest_connected_gfk"`
+	ConnectionPosition   int32    `mapstructure:"connection_position"`
+	ConnectedMdlFqName   *string  `mapstructure:"connected_mdl_fq_name"`
+	IsInternalConnected  bool     `mapstructure:"is_internal_connected"`
+	ConnectionIdGfkList  []string `mapstructure:"connection_id_gfk_list"`
+	InternalConnectedGfk string   `mapstructure:"internal_connected_gfk"`
+}
+
+type NdcfgDeviceType struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+	NwFwdLevel  int64  `mapstructure:"nw_fwd_level"`
+}
+
+type NdcfgParser struct {
+	Gpk          string                 `mapstructure:"gpk"`
+	Name         string                 `mapstructure:"name"`
+	ExecArgs     map[string]interface{} `mapstructure:"exec_args"`
+	Description  *string                `mapstructure:"description"`
+	AccessGroup  string                 `mapstructure:"access_group"`
+	IsExecutable bool                   `mapstructure:"is_executable"`
+}
+
+type DnsIpAddr struct {
+	Gpk        string     `mapstructure:"gpk"`
+	Cidr       net.IPNet  `mapstructure:"cidr"`
+	Type       string     `mapstructure:"type"`
+	Value      net.IPAddr `mapstructure:"value"`
+	IsOwn      bool       `mapstructure:"is_own"`
+	IsDhcp     bool       `mapstructure:"is_dhcp"`
+	IsReserved bool       `mapstructure:"is_reserved"`
+	IsRrTarget bool       `mapstructure:"is_rr_target"`
+}
+
+type NdSite struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Name             string  `mapstructure:"name"`
+	Type             string  `mapstructure:"type"`
+	FqName           string  `mapstructure:"fq_name"`
+	HasParent        bool    `mapstructure:"has_parent"`
+	Description      *string `mapstructure:"description"`
+	TypeIsChild      bool    `mapstructure:"type_is_child"`
+	ParentFqName     *string `mapstructure:"parent_fq_name"`
+	TypeForceIsChild bool    `mapstructure:"type_force_is_child"`
+}
+
+type CntlRole struct {
+	Gpk                string   `mapstructure:"gpk"`
+	Name               string   `mapstructure:"name"`
+	System             string   `mapstructure:"system"`
+	FqName             string   `mapstructure:"fq_name"`
+	IsRole             bool     `mapstructure:"is_role"`
+	Position           int64    `mapstructure:"position"`
+	IsAdminRole        bool     `mapstructure:"is_admin_role"`
+	HierarchyGfkList   []string `mapstructure:"hierarchy_gfk_list"`
+	IsDirectlyAssigned bool     `mapstructure:"is_directly_assigned"`
+}
+
+type NdcfgNetCmpnd struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdcfgNumMode struct {
+	Gpk   string `mapstructure:"gpk"`
+	Name  string `mapstructure:"name"`
+	Level int64  `mapstructure:"level"`
+}
+
+type NdcfgPPortSpeed struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type CntlMgr2role struct {
+	Gpk          string `mapstructure:"gpk"`
+	Role         string `mapstructure:"role"`
+	System       string `mapstructure:"system"`
+	RoleFqName   string `mapstructure:"role_fq_name"`
+	MgrLoginName string `mapstructure:"mgr_login_name"`
+}
+
+type CntlRole2role struct {
+	Gpk                 string `mapstructure:"gpk"`
+	RoleFqName          string `mapstructure:"role_fq_name"`
+	RoleIsRole          bool   `mapstructure:"role_is_role"`
+	ContainedRoleFqName string `mapstructure:"contained_role_fq_name"`
+}
+
+type NdModule2ap struct {
+	Gpk       string `mapstructure:"gpk"`
+	Bldg      string `mapstructure:"bldg"`
+	Room      string `mapstructure:"room"`
+	ApName    string `mapstructure:"ap_name"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type NdBcd struct {
+	Gpk                         string   `mapstructure:"gpk"`
+	Name                        string   `mapstructure:"name"`
+	Categ                       string   `mapstructure:"categ"`
+	IsOwn                       bool     `mapstructure:"is_own"`
+	Seclvl                      int64    `mapstructure:"seclvl"`
+	Description                 *string  `mapstructure:"description"`
+	DhcpDomain                  *string  `mapstructure:"dhcp_domain"`
+	DhcpEnabled                 bool     `mapstructure:"dhcp_enabled"`
+	DnsSearchList               []string `mapstructure:"dns_search_list"`
+	AdminDescription            *string  `mapstructure:"admin_description"`
+	DhcpOfferRsvTime            string   `mapstructure:"dhcp_offer_rsv_time"`
+	DhcpOptT1Percent            uint8    `mapstructure:"dhcp_opt_t1_percent"`
+	DhcpOptT2Percent            uint8    `mapstructure:"dhcp_opt_t2_percent"`
+	DhcpLeasetimeStatic         string   `mapstructure:"dhcp_leasetime_static"`
+	DhcpLeasetimeDynamic        string   `mapstructure:"dhcp_leasetime_dynamic"`
+	DhcpTtlValuePercent         uint8    `mapstructure:"dhcp_ttl_value_percent"`
+	DhcpDynamicLeaseRemovalTime string   `mapstructure:"dhcp_dynamic_lease_removal_time"`
+	DhcpNewLeasesGetStaticAddr  bool     `mapstructure:"dhcp_new_leases_get_static_addr"`
+	DhcpNewLeasesGetStaticFqdn  bool     `mapstructure:"dhcp_new_leases_get_static_fqdn"`
+	DhcpNewLeasesGetDynamicAddr bool     `mapstructure:"dhcp_new_leases_get_dynamic_addr"`
+}
+
+type NdcfgBcdCateg struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type NdcfgBcdSeclvl struct {
+	Gpk   string `mapstructure:"gpk"`
+	Value int64  `mapstructure:"value"`
+}
+
+type NdDevice struct {
+	Nc               string  `mapstructure:"nc"`
+	Acg              string  `mapstructure:"acg"`
+	Gpk              string  `mapstructure:"gpk"`
+	Fqdn             string  `mapstructure:"fqdn"`
+	Type             string  `mapstructure:"type"`
+	IsValid          bool    `mapstructure:"is_valid"`
+	Sysdescr         *string `mapstructure:"sysdescr"`
+	UsesVlans        bool    `mapstructure:"uses_vlans"`
+	Description      *string `mapstructure:"description"`
+	AssignedParser   string  `mapstructure:"assigned_parser"`
+	ExecutableParser string  `mapstructure:"executable_parser"`
+}
+
+type NdIpIntf struct {
+	Gpk         string     `mapstructure:"gpk"`
+	LPort       string     `mapstructure:"l_port"`
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	DevFqdn     string     `mapstructure:"dev_fqdn"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRoute struct {
+	Gpk        string      `mapstructure:"gpk"`
+	Cidr       net.IPNet   `mapstructure:"cidr"`
+	IsOwn      bool        `mapstructure:"is_own"`
+	Metric     int64       `mapstructure:"metric"`
+	DevFqdn    string      `mapstructure:"dev_fqdn"`
+	DestLPort  *string     `mapstructure:"dest_l_port"`
+	DestIpAddr *net.IPAddr `mapstructure:"dest_ip_addr"`
+}
+
+type NdLPort struct {
+	Gpk            string    `mapstructure:"gpk"`
+	Lag            *int64    `mapstructure:"lag"`
+	Name           string    `mapstructure:"name"`
+	Level          int64     `mapstructure:"level"`
+	DevFqdn        string    `mapstructure:"dev_fqdn"`
+	Priority       int64     `mapstructure:"priority"`
+	TagList        *[]string `mapstructure:"tag_list"`
+	AdmState       int64     `mapstructure:"adm_state"`
+	Description    *string   `mapstructure:"description"`
+	NameSortby     string    `mapstructure:"name_sortby"`
+	IngressVlanGfk *string   `mapstructure:"ingress_vlan_gfk"`
+}
+
+type NdcfgNetCmpnd2instnc struct {
+	Gpk       string `mapstructure:"gpk"`
+	NetCmpnd  string `mapstructure:"net_cmpnd"`
+	NetInstnc string `mapstructure:"net_instnc"`
+}
+
+type NdVlan struct {
+	Id          uint16  `mapstructure:"id"`
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	NetInstnc   string  `mapstructure:"net_instnc"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdL2pPort struct {
+	Gpk       string `mapstructure:"gpk"`
+	LPortGfk  string `mapstructure:"l_port_gfk"`
+	PPortGfk  string `mapstructure:"p_port_gfk"`
+	PortOrder int64  `mapstructure:"port_order"`
+}
+
+type NdDeviceAttributeImp struct {
+	Value   *string `mapstructure:"value"`
+	KeyWord string  `mapstructure:"key_word"`
+}
+
+type NdIpIntfImp struct {
+	IpAddr      net.IPAddr `mapstructure:"ip_addr"`
+	IsVrrp      bool       `mapstructure:"is_vrrp"`
+	VrrpId      *int64     `mapstructure:"vrrp_id"`
+	LPortName   string     `mapstructure:"l_port_name"`
+	IsSecondary bool       `mapstructure:"is_secondary"`
+}
+
+type NdIpRouteImp struct {
+	Net           net.IPNet   `mapstructure:"net"`
+	Metric        int64       `mapstructure:"metric"`
+	IsRoutable    bool        `mapstructure:"is_routable"`
+	DestIpAddr    *net.IPAddr `mapstructure:"dest_ip_addr"`
+	DestLPortName *string     `mapstructure:"dest_l_port_name"`
+}
+
+type NdL2pPortImp struct {
+	PortOrder    int64   `mapstructure:"port_order"`
+	LPortName    string  `mapstructure:"l_port_name"`
+	PPortName    string  `mapstructure:"p_port_name"`
+	FqModuleName *string `mapstructure:"fq_module_name"`
+}
+
+type NdLPortImp struct {
+	Lag           *int64         `mapstructure:"lag"`
+	Name          string         `mapstructure:"name"`
+	Prio          *int64         `mapstructure:"prio"`
+	Status        *int64         `mapstructure:"status"`
+	TagList       *[]interface{} `mapstructure:"tag_list"`
+	PortLevel     *int64         `mapstructure:"port_level"`
+	Description   *string        `mapstructure:"description"`
+	VlanIdIngress *uint16        `mapstructure:"vlan_id_ingress"`
+}
+
+type NdVlanEgressImp struct {
+	Id        uint16 `mapstructure:"id"`
+	IsTagged  bool   `mapstructure:"is_tagged"`
+	LPortName string `mapstructure:"l_port_name"`
+}
+
+type NdVlanImp struct {
+	Id        uint16  `mapstructure:"id"`
+	Name      *string `mapstructure:"name"`
+	VxlanVni  *uint32 `mapstructure:"vxlan_vni"`
+	NetInstnc *string `mapstructure:"net_instnc"`
+}
+
+type EvlogRecordType struct {
+	Gpk       string `mapstructure:"gpk"`
+	ShortName string `mapstructure:"short_name"`
+}
+
+type CntlGlobalPk2obj struct {
+	Gpk              string                 `mapstructure:"gpk"`
+	ObjectDict       map[string]interface{} `mapstructure:"object_dict"`
+	ObjectTypeFqName string                 `mapstructure:"object_type_fq_name"`
+}
+
+type CntlConstraint2error struct {
+	Gpk                  string `mapstructure:"gpk"`
+	Sqlstate             string `mapstructure:"sqlstate"`
+	ErrorCode            int64  `mapstructure:"error_code"`
+	ConstraintName       string `mapstructure:"constraint_name"`
+	ErrorTypeCode        int64  `mapstructure:"error_type_code"`
+	ConstraintTable      string `mapstructure:"constraint_table"`
+	ParentKeyNotFound    *bool  `mapstructure:"parent_key_not_found"`
+	ConstraintIsApiLevel bool   `mapstructure:"constraint_is_api_level"`
+}
+
+type NdcfgParser2sysdescr struct {
+	Gpk          string `mapstructure:"gpk"`
+	Parser       string `mapstructure:"parser"`
+	Sysdescr     string `mapstructure:"sysdescr"`
+	IsExecutable bool   `mapstructure:"is_executable"`
+}
+
+type OrgUnitType struct {
+	Gpk       string `mapstructure:"gpk"`
+	Name      string `mapstructure:"name"`
+	Position  int64  `mapstructure:"position"`
+	ShortName string `mapstructure:"short_name"`
+}
+
+type OrgUnit struct {
+	Gpk              string   `mapstructure:"gpk"`
+	Name             string   `mapstructure:"name"`
+	Type             string   `mapstructure:"type"`
+	ParentGfk        *string  `mapstructure:"parent_gfk"`
+	ShortName        string   `mapstructure:"short_name"`
+	TreeLevel        int32    `mapstructure:"tree_level"`
+	SubPosition      int64    `mapstructure:"sub_position"`
+	IsMgrAssignable  bool     `mapstructure:"is_mgr_assignable"`
+	ParentShortName  *string  `mapstructure:"parent_short_name"`
+	HierarchyGfkList []string `mapstructure:"hierarchy_gfk_list"`
+}
+
+type NdcfgSlotTypeClass struct {
+	Gpk  string `mapstructure:"gpk"`
+	Name string `mapstructure:"name"`
+}
+
+type NdcfgSlot2moduleTypeTree struct {
+	Gpk                   string   `mapstructure:"gpk"`
+	SlotType              string   `mapstructure:"slot_type"`
+	ParentGfk             *string  `mapstructure:"parent_gfk"`
+	TreeLevel             int32    `mapstructure:"tree_level"`
+	ModuleType            string   `mapstructure:"module_type"`
+	SlotVarname1          *string  `mapstructure:"slot_varname1"`
+	SubportPrefix         *string  `mapstructure:"subport_prefix"`
+	SubportVarprfx        *string  `mapstructure:"subport_varprfx"`
+	SubportVarname1       *string  `mapstructure:"subport_varname1"`
+	HierarchyGfkList      []string `mapstructure:"hierarchy_gfk_list"`
+	SubportVarprfxJoinDl  *string  `mapstructure:"subport_varprfx_join_dl"`
+	SubportVarprfxSplitDl *string  `mapstructure:"subport_varprfx_split_dl"`
+}
+
+type DnscfgFqdnType struct {
+	Gpk              string                 `mapstructure:"gpk"`
+	Name             string                 `mapstructure:"name"`
+	IsOwn            bool                   `mapstructure:"is_own"`
+	IsDhcp           bool                   `mapstructure:"is_dhcp"`
+	IsHost           bool                   `mapstructure:"is_host"`
+	Intname          string                 `mapstructure:"_intname"`
+	Position         int64                  `mapstructure:"position"`
+	RadType          int64                  `mapstructure:"rad_type"`
+	Groupname        string                 `mapstructure:"_groupname"`
+	Description      string                 `mapstructure:"description"`
+	IsWildcard       bool                   `mapstructure:"is_wildcard"`
+	IsNonterminal    bool                   `mapstructure:"is_nonterminal"`
+	VersionNameDict  map[string]interface{} `mapstructure:"version_name_dict"`
+	PermissionFqName *string                `mapstructure:"permission_fq_name"`
+}
+
+type DnscfgRecordType struct {
+	Gpk                               string  `mapstructure:"gpk"`
+	Name                              string  `mapstructure:"name"`
+	RfcInfo                           *string `mapstructure:"rfc_info"`
+	NumValue                          int64   `mapstructure:"num_value"`
+	IsInternal                        bool    `mapstructure:"is_internal"`
+	IsAddrBased                       bool    `mapstructure:"is_addr_based"`
+	IsNameBased                       bool    `mapstructure:"is_name_based"`
+	ForceAutoDml                      bool    `mapstructure:"force_auto_dml"`
+	FqdnTypeDflt                      *string `mapstructure:"fqdn_type_dflt"`
+	FqdnInttypeDflt                   *string `mapstructure:"_fqdn_inttype_dflt"`
+	TargetIsSingletonDflt             bool    `mapstructure:"target_is_singleton_dflt"`
+	TargetIsReverseUniqueDflt         bool    `mapstructure:"target_is_reverse_unique_dflt"`
+	DnspythonRdataTargetAttributeName *string `mapstructure:"dnspython_rdata_target_attribute_name"`
+}
+
+type DnscfgRecordInttype struct {
+	Gpk                   string                 `mapstructure:"gpk"`
+	IsOwn                 bool                   `mapstructure:"is_own"`
+	Intname               string                 `mapstructure:"_intname"`
+	FqdnType              string                 `mapstructure:"fqdn_type"`
+	Description           string                 `mapstructure:"description"`
+	RecordType            string                 `mapstructure:"record_type"`
+	FqdnInttype           string                 `mapstructure:"_fqdn_inttype"`
+	TargetFqdnType        *string                `mapstructure:"target_fqdn_type"`
+	VersionDefDict        map[string]interface{} `mapstructure:"version_def_dict"`
+	FqdnIsSingleton       bool                   `mapstructure:"fqdn_is_singleton"`
+	PermissionFqName      *string                `mapstructure:"permission_fq_name"`
+	TargetIpaddrType      *string                `mapstructure:"target_ipaddr_type"`
+	TargetIsSingleton     bool                   `mapstructure:"target_is_singleton"`
+	TargetFqdnInttype     *string                `mapstructure:"_target_fqdn_inttype"`
+	TargetIsReverseUnique bool                   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSet struct {
+	Gpk                 string  `mapstructure:"gpk"`
+	Name                string  `mapstructure:"name"`
+	Description         *string `mapstructure:"description"`
+	SoaDataRetry        uint32  `mapstructure:"soa_data_retry"`
+	SoaDataExpire       uint32  `mapstructure:"soa_data_expire"`
+	SoaDataMinimum      uint32  `mapstructure:"soa_data_minimum"`
+	SoaDataRefresh      uint32  `mapstructure:"soa_data_refresh"`
+	SoaDataHostmaster   string  `mapstructure:"soa_data_hostmaster"`
+	MembersAreExclusive bool    `mapstructure:"members_are_exclusive"`
+	ZoneDataIsExternal  bool    `mapstructure:"zone_data_is_external"`
+}
+
+type DnscfgNsSetMember struct {
+	Gpk              string  `mapstructure:"gpk"`
+	NsFqdn           string  `mapstructure:"ns_fqdn"`
+	NsSetName        string  `mapstructure:"ns_set_name"`
+	NsFqdnType       string  `mapstructure:"ns_fqdn_type"`
+	NsIsMaster       bool    `mapstructure:"ns_is_master"`
+	NsIsNative       bool    `mapstructure:"ns_is_native"`
+	NsIsPrimary      bool    `mapstructure:"ns_is_primary"`
+	NsIsRegistered   bool    `mapstructure:"ns_is_registered"`
+	NsXferMasterFqdn *string `mapstructure:"ns_xfer_master_fqdn"`
+}
+
+type DnsRecord struct {
+	Gpk                        string      `mapstructure:"gpk"`
+	Ttl                        *uint32     `mapstructure:"ttl"`
+	Data                       *string     `mapstructure:"data"`
+	Fqdn                       string      `mapstructure:"fqdn"`
+	Type                       string      `mapstructure:"type"`
+	Zone                       string      `mapstructure:"zone"`
+	IsOwn                      bool        `mapstructure:"is_own"`
+	IsAuth                     bool        `mapstructure:"is_auth"`
+	FqdnType                   string      `mapstructure:"fqdn_type"`
+	HostIsNws                  bool        `mapstructure:"host_is_nws"`
+	TargetFqdn                 *string     `mapstructure:"target_fqdn"`
+	TargetIpaddr               *net.IPAddr `mapstructure:"target_ipaddr"`
+	TtlResetDate               *string     `mapstructure:"ttl_reset_date"`
+	TtlResetDays               *uint8      `mapstructure:"ttl_reset_days"`
+	FqdnDescription            *string     `mapstructure:"fqdn_description"`
+	TargetFqdnType             *string     `mapstructure:"target_fqdn_type"`
+	TtlZoneDefault             uint32      `mapstructure:"ttl_zone_default"`
+	TargetIpaddrType           *string     `mapstructure:"target_ipaddr_type"`
+	TargetIsSingleton          bool        `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique      bool        `mapstructure:"target_is_reverse_unique"`
+	RrChainTargetSubnetGfkList *[]string   `mapstructure:"rr_chain_target_subnet_gfk_list"`
+}
+
+type NdModule2device struct {
+	Gpk       string `mapstructure:"gpk"`
+	DevFqdn   string `mapstructure:"dev_fqdn"`
+	MdlFqName string `mapstructure:"mdl_fq_name"`
+}
+
+type DnscfgFqdn2perm struct {
+	Gpk              string `mapstructure:"gpk"`
+	Fqdn             string `mapstructure:"fqdn"`
+	IsRecursive      bool   `mapstructure:"is_recursive"`
+	IsZoneBound      bool   `mapstructure:"is_zone_bound"`
+	RecursiveMinLvl  int64  `mapstructure:"recursive_min_lvl"`
+	PermissionFqName string `mapstructure:"permission_fq_name"`
+}
+
+type WapiVersion struct {
+	Gpk                   string                 `mapstructure:"gpk"`
+	Major                 int64                  `mapstructure:"major"`
+	Minor                 int64                  `mapstructure:"minor"`
+	Patch                 int64                  `mapstructure:"patch"`
+	DocUri                string                 `mapstructure:"doc_uri"`
+	Numeric               string                 `mapstructure:"numeric"`
+	Semantic              string                 `mapstructure:"semantic"`
+	LanguageDict          map[string]interface{} `mapstructure:"language_dict"`
+	OperationMode         string                 `mapstructure:"operation_mode"`
+	LastStatusChangeDate  string                 `mapstructure:"last_status_change_date"`
+	TransactionJsonSchema map[string]interface{} `mapstructure:"transaction_json_schema"`
+}
+
+type WapiVersionState struct {
+	Gpk      string `mapstructure:"gpk"`
+	Numeric  int64  `mapstructure:"numeric"`
+	Semantic string `mapstructure:"semantic"`
+}
+
+type WapiSystem struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectType struct {
+	Name                       string                 `mapstructure:"name"`
+	System                     string                 `mapstructure:"system"`
+	FqName                     string                 `mapstructure:"fq_name"`
+	Attributes                 map[string]interface{} `mapstructure:"attributes"`
+	IsLogDst                   bool                   `mapstructure:"is_log_dst"`
+	IsLogSrc                   bool                   `mapstructure:"is_log_src"`
+	Constraints                map[string]interface{} `mapstructure:"constraints"`
+	IsLangDst                  bool                   `mapstructure:"is_lang_dst"`
+	IsLangSrc                  bool                   `mapstructure:"is_lang_src"`
+	Referencing                map[string]interface{} `mapstructure:"referencing"`
+	IsOtattrDst                bool                   `mapstructure:"is_otattr_dst"`
+	IsOtattrSrc                bool                   `mapstructure:"is_otattr_src"`
+	Referenceable              map[string]interface{} `mapstructure:"referenceable"`
+	DoActivateGlobalPk2obj     bool                   `mapstructure:"do_activate_global_pk2obj"`
+	ObjectTypeGrantsReadAccess bool                   `mapstructure:"object_type_grants_read_access"`
+}
+
+type CntlDataType struct {
+	Pk                 int64    `mapstructure:"pk"`
+	Gpk                string   `mapstructure:"gpk"`
+	Name               string   `mapstructure:"name"`
+	BaseName           string   `mapstructure:"base_name"`
+	BaseNspc           *string  `mapstructure:"base_nspc"`
+	JsonName           string   `mapstructure:"json_name"`
+	IsPrimary          bool     `mapstructure:"is_primary"`
+	TextLength         *int64   `mapstructure:"text_length"`
+	PgTypeName         string   `mapstructure:"pg_type_name"`
+	PgTypeNspc         string   `mapstructure:"pg_type_nspc"`
+	OperatorList       []string `mapstructure:"operator_list"`
+	FormatLiteral      *string  `mapstructure:"format_literal"`
+	ConvDatyValAttname string   `mapstructure:"conv_daty_val_attname"`
+}
+
+type WapiFunction struct {
+	Name               string                 `mapstructure:"name"`
+	System             string                 `mapstructure:"system"`
+	FqName             string                 `mapstructure:"fq_name"`
+	Parameters         map[string]interface{} `mapstructure:"parameters"`
+	ObjectType         string                 `mapstructure:"object_type"`
+	IsReturning        bool                   `mapstructure:"is_returning"`
+	IsExecutable       bool                   `mapstructure:"is_executable"`
+	IsDataManipulating bool                   `mapstructure:"is_data_manipulating"`
+}
+
+type Dhcpv4GlobalOption struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Code        int64   `mapstructure:"code"`
+	Data        string  `mapstructure:"data"`
+	Name        string  `mapstructure:"name"`
+	DataType    string  `mapstructure:"data_type"`
+	Reference   *string `mapstructure:"reference"`
+	Description *string `mapstructure:"description"`
+	IsGenerated bool    `mapstructure:"is_generated"`
+}
+
+type NdcfgSiteType struct {
+	Gpk          string `mapstructure:"gpk"`
+	IsChild      bool   `mapstructure:"is_child"`
+	IsParent     bool   `mapstructure:"is_parent"`
+	ShortName    string `mapstructure:"short_name"`
+	ForceIsChild bool   `mapstructure:"force_is_child"`
+}
+
+type Dhcpv4Lease struct {
+	Gpk                  string                  `mapstructure:"gpk"`
+	IsOwn                bool                    `mapstructure:"is_own"`
+	Leasetime            *string                 `mapstructure:"leasetime"`
+	FqdnValue            *string                 `mapstructure:"fqdn_value"`
+	IsExpired            bool                    `mapstructure:"is_expired"`
+	IsOffered            bool                    `mapstructure:"is_offered"`
+	TsExpires            string                  `mapstructure:"ts_expires"`
+	FqdnIsDhcp           bool                    `mapstructure:"fqdn_is_dhcp"`
+	IpAddrValue          *net.IPAddr             `mapstructure:"ip_addr_value"`
+	IpSubnetCidr         net.IPNet               `mapstructure:"ip_subnet_cidr"`
+	IsStaticAddr         bool                    `mapstructure:"is_static_addr"`
+	IsStaticFqdn         bool                    `mapstructure:"is_static_fqdn"`
+	MacAddrValue         *net.HardwareAddr       `mapstructure:"mac_addr_value"`
+	IpAddrIsDhcp         bool                    `mapstructure:"ip_addr_is_dhcp"`
+	TsLastChanged        string                  `mapstructure:"ts_last_changed"`
+	AdmStatusDescr       *string                 `mapstructure:"adm_status_descr"`
+	ClientIdentifier     *string                 `mapstructure:"client_identifier"`
+	OperStatusDescr      *string                 `mapstructure:"oper_status_descr"`
+	ClientOptionsDict    *map[string]interface{} `mapstructure:"client_options_dict"`
+	ServerOptionsDict    *map[string]interface{} `mapstructure:"server_options_dict"`
+	AlwaysMatchByMacAddr bool                    `mapstructure:"always_match_by_mac_addr"`
+}
+
+type Dhcpv4SubnetOption struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Code         int64     `mapstructure:"code"`
+	Data         string    `mapstructure:"data"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	Priority     int64     `mapstructure:"priority"`
+	CodeDataType string    `mapstructure:"code_data_type"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4Og struct {
+	Gpk          string    `mapstructure:"gpk"`
+	Name         string    `mapstructure:"name"`
+	IsOwn        bool      `mapstructure:"is_own"`
+	IpSubnetCidr net.IPNet `mapstructure:"ip_subnet_cidr"`
+}
+
+type Dhcpv4GroupOption struct {
+	Gpk          string `mapstructure:"gpk"`
+	Code         int64  `mapstructure:"code"`
+	Data         string `mapstructure:"data"`
+	IsOwn        bool   `mapstructure:"is_own"`
+	OgGfk        string `mapstructure:"og_gfk"`
+	Priority     int64  `mapstructure:"priority"`
+	CodeDataType string `mapstructure:"code_data_type"`
+}
+
+type NdcfgSiteType2type struct {
+	Gpk             string `mapstructure:"gpk"`
+	ChildShortName  string `mapstructure:"child_short_name"`
+	ParentShortName string `mapstructure:"parent_short_name"`
+}
+
+type CntlColumnKvtab struct {
+	Gpk        string `mapstructure:"gpk"`
+	Key        string `mapstructure:"key"`
+	Position   *int64 `mapstructure:"position"`
+	TableName  string `mapstructure:"table_name"`
+	ColumnName string `mapstructure:"column_name"`
+}
+
+type NdDiqTa struct {
+	Gpk               string  `mapstructure:"gpk"`
+	Owner             string  `mapstructure:"owner"`
+	IsOwn             bool    `mapstructure:"is_own"`
+	Position          *int64  `mapstructure:"position"`
+	IsActive          bool    `mapstructure:"is_active"`
+	IsWorking         bool    `mapstructure:"is_working"`
+	ParentGfk         *string `mapstructure:"parent_gfk"`
+	MailOnError       bool    `mapstructure:"mail_on_error"`
+	LastDevimpTs      *string `mapstructure:"last_devimp_ts"`
+	LastDevimpMsg     *string `mapstructure:"last_devimp_msg"`
+	MailOnSuccess     bool    `mapstructure:"mail_on_success"`
+	PreserveOnError   bool    `mapstructure:"preserve_on_error"`
+	LastDevimpSuccess *bool   `mapstructure:"last_devimp_success"`
+	PreserveOnSuccess bool    `mapstructure:"preserve_on_success"`
+}
+
+type NdDiqTaEntry struct {
+	Gpk               string                 `mapstructure:"gpk"`
+	DevNc             string                 `mapstructure:"dev_nc"`
+	DevAcg            string                 `mapstructure:"dev_acg"`
+	DoSave            bool                   `mapstructure:"do_save"`
+	DevFqdn           string                 `mapstructure:"dev_fqdn"`
+	DevType           string                 `mapstructure:"dev_type"`
+	DoParse           bool                   `mapstructure:"do_parse"`
+	DoImport          bool                   `mapstructure:"do_import"`
+	DevParser         string                 `mapstructure:"dev_parser"`
+	DiqTaGfk          string                 `mapstructure:"diq_ta_gfk"`
+	DiqTaIsOwn        bool                   `mapstructure:"diq_ta_is_own"`
+	DevDescription    *string                `mapstructure:"dev_description"`
+	LastDevimpMsg     *string                `mapstructure:"last_devimp_msg"`
+	UploadFilename    *string                `mapstructure:"upload_filename"`
+	OutputVerbosity   bool                   `mapstructure:"output_verbosity"`
+	DevAttributesDict map[string]interface{} `mapstructure:"dev_attributes_dict"`
+	LastDevimpSuccess *bool                  `mapstructure:"last_devimp_success"`
+	RplcCharsetErrors bool                   `mapstructure:"rplc_charset_errors"`
+}
+
+type DnscfgFqdnTypeGroup struct {
+	Gpk         string `mapstructure:"gpk"`
+	Name        string `mapstructure:"name"`
+	Description string `mapstructure:"description"`
+}
+
+type WapiException struct {
+	Hint              *string                `mapstructure:"hint"`
+	Error             map[string]interface{} `mapstructure:"error"`
+	Others            map[string]interface{} `mapstructure:"others"`
+	Traceback         []interface{}          `mapstructure:"traceback"`
+	Constraint        map[string]interface{} `mapstructure:"constraint"`
+	ErrorType         map[string]interface{} `mapstructure:"error_type"`
+	StackedDiagParams map[string]interface{} `mapstructure:"stacked_diag_params"`
+}
+
+type EvlogRecord struct {
+	Data             *string                `mapstructure:"data"`
+	Type             string                 `mapstructure:"type"`
+	ObjectGfk        string                 `mapstructure:"object_gfk"`
+	LanguageTag      string                 `mapstructure:"language_tag"`
+	TaTimestamp      string                 `mapstructure:"ta_timestamp"`
+	MgrLoginName     *string                `mapstructure:"mgr_login_name"`
+	LogParamsDict    map[string]interface{} `mapstructure:"log_params_dict"`
+	ObjectTypeFqName string                 `mapstructure:"object_type_fq_name"`
+}
+
+type CntlWapiAuth struct {
+	Gpk              string  `mapstructure:"gpk"`
+	Type             string  `mapstructure:"type"`
+	Token            string  `mapstructure:"token"`
+	IsOwn            bool    `mapstructure:"is_own"`
+	IsExpired        bool    `mapstructure:"is_expired"`
+	LoginName        string  `mapstructure:"login_name"`
+	DeleteDate       string  `mapstructure:"delete_date"`
+	Description      *string `mapstructure:"description"`
+	ExpirationDate   *string `mapstructure:"expiration_date"`
+	LastLoginDate    *string `mapstructure:"last_login_date"`
+	LastGenerateDate string  `mapstructure:"last_generate_date"`
+}
+
+type DnssecZoneKey struct {
+	Gpk            string   `mapstructure:"gpk"`
+	Tag            *uint32  `mapstructure:"tag"`
+	Data           *string  `mapstructure:"data"`
+	Fqdn           string   `mapstructure:"fqdn"`
+	Flags          int64    `mapstructure:"flags"`
+	IsKsk          bool     `mapstructure:"is_ksk"`
+	IsActive       bool     `mapstructure:"is_active"`
+	CreationTs     string   `mapstructure:"creation_ts"`
+	ActivationTs   *string  `mapstructure:"activation_ts"`
+	DnskeyRrData   string   `mapstructure:"dnskey_rr_data"`
+	DeactivationTs *string  `mapstructure:"deactivation_ts"`
+	DsRrDataList   []string `mapstructure:"ds_rr_data_list"`
+}
+
+type CntlMgr2group struct {
+	Gpk                string  `mapstructure:"gpk"`
+	IsOwn              bool    `mapstructure:"is_own"`
+	GroupName          string  `mapstructure:"group_name"`
+	MgrLoginName       string  `mapstructure:"mgr_login_name"`
+	ParentGroupName    string  `mapstructure:"parent_group_name"`
+	ParentMgrLoginName *string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	FqdnValue       string `mapstructure:"fqdn_value"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type DhcpcfgOperator struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Name        string  `mapstructure:"name"`
+	Description *string `mapstructure:"description"`
+}
+
+type DhcpcfgDt2operator2dt struct {
+	Gpk           string `mapstructure:"gpk"`
+	Operator      string `mapstructure:"operator"`
+	LeftDataType  string `mapstructure:"left_data_type"`
+	RightDataType string `mapstructure:"right_data_type"`
+}
+
+type Dhcpv4SubnetOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	SnOptGfk       string `mapstructure:"sn_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type Dhcpv4GroupOptionRule struct {
+	Gpk            string `mapstructure:"gpk"`
+	IsOwn          bool   `mapstructure:"is_own"`
+	Operator       string `mapstructure:"operator"`
+	OptCode        int64  `mapstructure:"opt_code"`
+	OgOptGfk       string `mapstructure:"og_opt_gfk"`
+	LeftDataType   string `mapstructure:"left_data_type"`
+	RightDataType  string `mapstructure:"right_data_type"`
+	RightDataValue string `mapstructure:"right_data_value"`
+}
+
+type MacauthClient struct {
+	Gpk               string           `mapstructure:"gpk"`
+	IsOwn             bool             `mapstructure:"is_own"`
+	WpaKey            *string          `mapstructure:"wpa_key"`
+	BcdName           string           `mapstructure:"bcd_name"`
+	MacAddr           net.HardwareAddr `mapstructure:"mac_addr"`
+	Description       *string          `mapstructure:"description"`
+	LastLoginDate     *string          `mapstructure:"last_login_date"`
+	LastLoginNodeInfo *string          `mapstructure:"last_login_node_info"`
+}
+
+type NdVlan2device struct {
+	Gpk     string `mapstructure:"gpk"`
+	DevFqdn string `mapstructure:"dev_fqdn"`
+	VlanGfk string `mapstructure:"vlan_gfk"`
+}
+
+type NdcfgLPortTag struct {
+	Gpk         string  `mapstructure:"gpk"`
+	Value       string  `mapstructure:"value"`
+	LevelList   []int16 `mapstructure:"level_list"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan struct {
+	Bcd         string  `mapstructure:"bcd"`
+	Gpk         string  `mapstructure:"gpk"`
+	Vni         uint32  `mapstructure:"vni"`
+	Description *string `mapstructure:"description"`
+}
+
+type NdVxlan2device struct {
+	Gpk      string `mapstructure:"gpk"`
+	DevFqdn  string `mapstructure:"dev_fqdn"`
+	VxlanVni uint32 `mapstructure:"vxlan_vni"`
+}
+
+type CntlGroup struct {
+	Gpk                     string  `mapstructure:"gpk"`
+	Name                    string  `mapstructure:"name"`
+	IsOwn                   bool    `mapstructure:"is_own"`
+	IsSub                   bool    `mapstructure:"is_sub"`
+	SubId                   *string `mapstructure:"sub_id"`
+	IsAdmin                 bool    `mapstructure:"is_admin"`
+	Description             *string `mapstructure:"description"`
+	DoIdmSync               bool    `mapstructure:"do_idm_sync"`
+	ParentName              string  `mapstructure:"parent_name"`
+	OuShortName             *string `mapstructure:"ou_short_name"`
+	IdmDescription          *string `mapstructure:"idm_description"`
+	IdmSyncLastTs           *string `mapstructure:"idm_sync_last_ts"`
+	IdmSyncIsActive         bool    `mapstructure:"idm_sync_is_active"`
+	IdmSyncLastState        *string `mapstructure:"idm_sync_last_state"`
+	IdmSyncMaxMgrCount      int64   `mapstructure:"idm_sync_max_mgr_count"`
+	ContentIsRwAccessible   bool    `mapstructure:"content_is_rw_accessible"`
+	IdmSyncLastSuccessfulTs *string `mapstructure:"idm_sync_last_successful_ts"`
+}
+
+type NdBcd2group struct {
+	Gpk             string `mapstructure:"gpk"`
+	IsOwn           bool   `mapstructure:"is_own"`
+	BcdName         string `mapstructure:"bcd_name"`
+	GroupName       string `mapstructure:"group_name"`
+	ParentGroupName string `mapstructure:"parent_group_name"`
+}
+
+type CntlMgr2ou struct {
+	Gpk                string `mapstructure:"gpk"`
+	IsOwn              bool   `mapstructure:"is_own"`
+	IsSub              bool   `mapstructure:"is_sub"`
+	OuShortName        string `mapstructure:"ou_short_name"`
+	MgrLoginName       string `mapstructure:"mgr_login_name"`
+	ParentOuShortName  string `mapstructure:"parent_ou_short_name"`
+	ParentMgrLoginName string `mapstructure:"parent_mgr_login_name"`
+}
+
+type DnsFqdn2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	FqdnValue   string `mapstructure:"fqdn_value"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlOtAttrDef struct {
+	Gpk                            string  `mapstructure:"gpk"`
+	KeyWord                        string  `mapstructure:"key_word"`
+	DataType                       string  `mapstructure:"data_type"`
+	ObjectTypeFqName               string  `mapstructure:"object_type_fq_name"`
+	InsTrgFuncFqName               *string `mapstructure:"ins_trg_func_fq_name"`
+	UpdTrgFuncFqName               *string `mapstructure:"upd_trg_func_fq_name"`
+	RefObjectTypeFqName            string  `mapstructure:"ref_object_type_fq_name"`
+	ObjectTypeRefAttributeName     string  `mapstructure:"object_type_ref_attribute_name"`
+	ObjectTypeApiRefConstraintName string  `mapstructure:"object_type_api_ref_constraint_name"`
+}
+
+type CntlOtAttrKey struct {
+	Gpk                 string  `mapstructure:"gpk"`
+	SetMode             int64   `mapstructure:"set_mode"`
+	DisplayMode         int64   `mapstructure:"display_mode"`
+	DefaultValue        *string `mapstructure:"default_value"`
+	ValIsUnique         bool    `mapstructure:"val_is_unique"`
+	RefObjectGfk        *string `mapstructure:"ref_object_gfk"`
+	ValIsNullable       bool    `mapstructure:"val_is_nullable"`
+	DisplayPosition     int64   `mapstructure:"display_position"`
+	PermissionFqName    *string `mapstructure:"permission_fq_name"`
+	ObjectTypeFqName    string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord    string  `mapstructure:"ot_attr_def_key_word"`
+	RefObjectTypeFqName string  `mapstructure:"ref_object_type_fq_name"`
+}
+
+type CntlOtAttrVal struct {
+	Value            *string `mapstructure:"value"`
+	DataType         string  `mapstructure:"data_type"`
+	ObjectGfk        string  `mapstructure:"object_gfk"`
+	RefObjectGfk     *string `mapstructure:"ref_object_gfk"`
+	ObjectTypeFqName string  `mapstructure:"object_type_fq_name"`
+	OtAttrDefKeyWord string  `mapstructure:"ot_attr_def_key_word"`
+}
+
+type NdBcd2ou struct {
+	Gpk         string `mapstructure:"gpk"`
+	IsOwn       bool   `mapstructure:"is_own"`
+	BcdName     string `mapstructure:"bcd_name"`
+	IsRecursive bool   `mapstructure:"is_recursive"`
+	OuShortName string `mapstructure:"ou_short_name"`
+}
+
+type CntlReplication struct {
+	Gpk      string `mapstructure:"gpk"`
+	Name     string `mapstructure:"name"`
+	OperMode string `mapstructure:"oper_mode"`
+}
+
+type CntlReplicationPub2sub struct {
+	Gpk                   string `mapstructure:"gpk"`
+	DoInit                bool   `mapstructure:"do_init"`
+	PublisherFqdn         string `mapstructure:"publisher_fqdn"`
+	SubscriberFqdn        string `mapstructure:"subscriber_fqdn"`
+	ReplicationName       string `mapstructure:"replication_name"`
+	ReplicationOperMode   string `mapstructure:"replication_oper_mode"`
+	ReplicationSlotSuffix string `mapstructure:"replication_slot_suffix"`
+}
+
+type WapiDataType struct {
+	Name          string                 `mapstructure:"name"`
+	JsonName      string                 `mapstructure:"json_name"`
+	TextLength    *int64                 `mapstructure:"text_length"`
+	LanguageDict  map[string]interface{} `mapstructure:"language_dict"`
+	OperatorList  []string               `mapstructure:"operator_list"`
+	FormatLiteral *string                `mapstructure:"format_literal"`
+}
+
+type WapiDataTypeOperator struct {
+	Name         string                 `mapstructure:"name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+	DataTypeList []string               `mapstructure:"data_type_list"`
+}
+
+type DnsRecordImp struct {
+	Ttl                   *uint32 `mapstructure:"ttl"`
+	Type                  *string `mapstructure:"type"`
+	DataList              *string `mapstructure:"data_list"`
+	TtlResetDays          *uint8  `mapstructure:"ttl_reset_days"`
+	TargetIsSingleton     *bool   `mapstructure:"target_is_singleton"`
+	TargetIsReverseUnique *bool   `mapstructure:"target_is_reverse_unique"`
+}
+
+type DnscfgNsSetHost struct {
+	Gpk       string `mapstructure:"gpk"`
+	HostFqdn  string `mapstructure:"host_fqdn"`
+	NsSetName string `mapstructure:"ns_set_name"`
+}
+
+type Dhcpv4Og2lease struct {
+	Gpk      string `mapstructure:"gpk"`
+	IsOwn    bool   `mapstructure:"is_own"`
+	OgGfk    string `mapstructure:"og_gfk"`
+	Priority int64  `mapstructure:"priority"`
+	LeaseGfk string `mapstructure:"lease_gfk"`
+}
+
+type CntlDataTypeOperator struct {
+	Gpk          string   `mapstructure:"gpk"`
+	Name         string   `mapstructure:"name"`
+	DataTypeList []string `mapstructure:"data_type_list"`
+}
+
+type TmpGenericObject struct {
+	Dict     map[string]interface{}   `mapstructure:"_dict"`
+	DictList []map[string]interface{} `mapstructure:"_dict_list"`
+}
+
+type NdVxlanImp struct {
+	Vni *uint32 `mapstructure:"vni"`
+}
+
+type WapiMaintState struct {
+	Pk                int64                  `mapstructure:"pk"`
+	TsEnd             string                 `mapstructure:"ts_end"`
+	Subject           string                 `mapstructure:"subject"`
+	Duration          string                 `mapstructure:"duration"`
+	TsBegin           string                 `mapstructure:"ts_begin"`
+	IsActive          bool                   `mapstructure:"is_active"`
+	LanguageDict      map[string]interface{} `mapstructure:"language_dict"`
+	CntlErrorCode     int64                  `mapstructure:"cntl_error_code"`
+	CntlErrorTypeCode int64                  `mapstructure:"cntl_error_type_code"`
+	CntlErrorTypeName string                 `mapstructure:"cntl_error_type_name"`
+}
+
+type CntlLanguage struct {
+	Gpk       string `mapstructure:"gpk"`
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsActive  bool   `mapstructure:"is_active"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type CntlOtLangAttrDef struct {
+	Gpk              string `mapstructure:"gpk"`
+	KeyWord          string `mapstructure:"key_word"`
+	IsStatic         bool   `mapstructure:"is_static"`
+	IsPrimary        bool   `mapstructure:"is_primary"`
+	ObjectTypeFqName string `mapstructure:"object_type_fq_name"`
+}
+
+type CntlOtLangAttrVal struct {
+	Value                *string `mapstructure:"value"`
+	ObjectGfk            string  `mapstructure:"object_gfk"`
+	LanguageTag          string  `mapstructure:"language_tag"`
+	ObjectTypeFqName     string  `mapstructure:"object_type_fq_name"`
+	OtLangAttrDefKeyWord string  `mapstructure:"ot_lang_attr_def_key_word"`
+}
+
+type WapiLanguage struct {
+	Tag       string `mapstructure:"tag"`
+	Name      string `mapstructure:"name"`
+	IsDefault bool   `mapstructure:"is_default"`
+}
+
+type WapiObjectTypeLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type WapiObjectTypeAttrLangDict struct {
+	FqName       string                 `mapstructure:"fq_name"`
+	LanguageDict map[string]interface{} `mapstructure:"language_dict"`
+}
+
+type TmpDiag4gpk struct {
+	ObjectGpk      string `mapstructure:"object_gpk"`
+	SystemName     string `mapstructure:"system_name"`
+	ObjectTypeName string `mapstructure:"object_type_name"`
+}
+
+type NdIpSubnetStatistic struct {
+	IpSubnetGfk          string    `mapstructure:"ip_subnet_gfk"`
+	IpSubnetCidr         net.IPNet `mapstructure:"ip_subnet_cidr"`
+	DhcpLeaseCount       int64     `mapstructure:"dhcp_lease_count"`
+	DhcpIpAddrCount      int64     `mapstructure:"dhcp_ip_addr_count"`
+	DnsIpAddrRrCount     int64     `mapstructure:"dns_ip_addr_rr_count"`
+	DnsIpAddrRsvCount    int64     `mapstructure:"dns_ip_addr_rsv_count"`
+	DhcpActiveLeaseCount int64     `mapstructure:"dhcp_active_lease_count"`
+}
+
+type DnsFqdnStatistic struct {
+	HasRr        bool   `mapstructure:"has_rr"`
+	FqdnGfk      string `mapstructure:"fqdn_gfk"`
+	FqdnValue    string `mapstructure:"fqdn_value"`
+	SubFqdnCount int64  `mapstructure:"sub_fqdn_count"`
+}
+
+type TmpGenericCidr struct {
+	Value net.IPNet `mapstructure:"value"`
+}
+
diff --git a/4.2/golang/tmp.py b/4.2/golang/tmp.py
deleted file mode 100644
index 1118e82..0000000
--- a/4.2/golang/tmp.py
+++ /dev/null
@@ -1,157 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class GenericObject(APIObject):
-	_dict: dict
-	_dict_list: list
-
-	def __post_init__(self):
-		if not isinstance(self._dict, dict):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(self._dict)}")
-		if not isinstance(self._dict_list, list):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(self._dict_list)}")
-
-	@staticmethod
-	def create_ta(_dict_new: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		return {'name': 'tmp.generic_object.create', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, _dict_new: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(_dict_new=_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(_dict_list_old: list = []) -> dict:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		return {'name': 'tmp.generic_object.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'_dict_list': _dict_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, _dict_list_old: list = []) -> list:
-		if _dict_list_old is not None and not (isinstance(_dict_list_old, list)):
-			raise ValueError(f"'_dict_list' of incorrect type. Expected list, got {type(_dict_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(_dict_list_old=_dict_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(_dict_new: dict = {}, _dict_old: dict = {}) -> dict:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		return {'name': 'tmp.generic_object.update', 'new': _denullify_dict({'_dict': _dict_new}), 'old': _denullify_dict({'_dict': _dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, _dict_new: dict = {}, _dict_old: dict = {}) -> list:
-		if _dict_new is not None and not (isinstance(_dict_new, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_new)}")
-		if _dict_old is not None and not (isinstance(_dict_old, dict)):
-			raise ValueError(f"'_dict' of incorrect type. Expected dict, got {type(_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(_dict_new=_dict_new, _dict_old=_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Diag4gpk(APIObject):
-	object_gpk: str
-	system_name: str
-	object_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.object_gpk, str):
-			raise ValueError(f"'object_gpk' of incorrect type. Expected str, got {type(self.object_gpk)}")
-		if not isinstance(self.system_name, str):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(self.system_name)}")
-		if not isinstance(self.object_type_name, str):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(self.object_type_name)}")
-
-	@staticmethod
-	def list_ta(system_name_old: str = None, object_type_name_old: str = None) -> dict:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		return {'name': 'tmp.diag4gpk.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'system_name': system_name_old, 'object_type_name': object_type_name_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, system_name_old: str = None, object_type_name_old: str = None) -> list:
-		if system_name_old is not None and not (isinstance(system_name_old, str)):
-			raise ValueError(f"'system_name' of incorrect type. Expected str, got {type(system_name_old)}")
-		if object_type_name_old is not None and not (isinstance(object_type_name_old, str)):
-			raise ValueError(f"'object_type_name' of incorrect type. Expected str, got {type(object_type_name_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(system_name_old=system_name_old, object_type_name_old=object_type_name_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class GenericCidr(APIObject):
-	value: str
-
-	def __post_init__(self):
-		if not isinstance(self.value, str):
-			raise ValueError(f"'value' of incorrect type. Expected str, got {type(self.value)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, base_value_list_old: list = None, masklen_summand_old: int = 0, sorting_params_list_old: list = None, masklen_summand_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if base_value_list_old is not None and not (isinstance(base_value_list_old, list)):
-			raise ValueError(f"'base_value_list' of incorrect type. Expected list, got {type(base_value_list_old)}")
-		if masklen_summand_old is not None and not (isinstance(masklen_summand_old, int)):
-			raise ValueError(f"'masklen_summand' of incorrect type. Expected int, got {type(masklen_summand_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if masklen_summand_list_old is not None and not (isinstance(masklen_summand_list_old, list)):
-			raise ValueError(f"'masklen_summand_list' of incorrect type. Expected list, got {type(masklen_summand_list_old)}")
-
-		return {'name': 'tmp.generic_cidr.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'base_value_list': base_value_list_old, 'masklen_summand': masklen_summand_old, 'sorting_params_list': sorting_params_list_old, 'masklen_summand_list': masklen_summand_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, base_value_list_old: list = None, masklen_summand_old: int = 0, sorting_params_list_old: list = None, masklen_summand_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if base_value_list_old is not None and not (isinstance(base_value_list_old, list)):
-			raise ValueError(f"'base_value_list' of incorrect type. Expected list, got {type(base_value_list_old)}")
-		if masklen_summand_old is not None and not (isinstance(masklen_summand_old, int)):
-			raise ValueError(f"'masklen_summand' of incorrect type. Expected int, got {type(masklen_summand_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if masklen_summand_list_old is not None and not (isinstance(masklen_summand_list_old, list)):
-			raise ValueError(f"'masklen_summand_list' of incorrect type. Expected list, got {type(masklen_summand_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, base_value_list_old=base_value_list_old, masklen_summand_old=masklen_summand_old, sorting_params_list_old=sorting_params_list_old, masklen_summand_list_old=masklen_summand_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
diff --git a/4.2/golang/wapi.py b/4.2/golang/wapi.py
deleted file mode 100644
index 9220256..0000000
--- a/4.2/golang/wapi.py
+++ /dev/null
@@ -1,898 +0,0 @@
-### AUTOGENERATED
-from . import _denullify_dict
-from . import *
-from dataclasses import dataclass
-from typing import Union
-
-
-@dataclass()
-class Version(APIObject):
-	gpk: str
-	major: int
-	minor: int
-	patch: int
-	doc_uri: str
-	numeric: str
-	semantic: str
-	language_dict: dict
-	operation_mode: str
-	last_status_change_date: str
-	transaction_json_schema: dict
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.major, int):
-			raise ValueError(f"'major' of incorrect type. Expected int, got {type(self.major)}")
-		if not isinstance(self.minor, int):
-			raise ValueError(f"'minor' of incorrect type. Expected int, got {type(self.minor)}")
-		if not isinstance(self.patch, int):
-			raise ValueError(f"'patch' of incorrect type. Expected int, got {type(self.patch)}")
-		if not isinstance(self.doc_uri, str):
-			raise ValueError(f"'doc_uri' of incorrect type. Expected str, got {type(self.doc_uri)}")
-		if not isinstance(self.numeric, str):
-			raise ValueError(f"'numeric' of incorrect type. Expected str, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operation_mode, str):
-			raise ValueError(f"'operation_mode' of incorrect type. Expected str, got {type(self.operation_mode)}")
-		if not isinstance(self.last_status_change_date, str):
-			raise ValueError(f"'last_status_change_date' of incorrect type. Expected str, got {type(self.last_status_change_date)}")
-		if not isinstance(self.transaction_json_schema, dict):
-			raise ValueError(f"'transaction_json_schema' of incorrect type. Expected dict, got {type(self.transaction_json_schema)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, major_list_old: list = None, minor_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if major_list_old is not None and not (isinstance(major_list_old, list)):
-			raise ValueError(f"'major_list' of incorrect type. Expected list, got {type(major_list_old)}")
-		if minor_list_old is not None and not (isinstance(minor_list_old, list)):
-			raise ValueError(f"'minor_list' of incorrect type. Expected list, got {type(minor_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'major_list': major_list_old, 'minor_list': minor_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, major_list_old: list = None, minor_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if major_list_old is not None and not (isinstance(major_list_old, list)):
-			raise ValueError(f"'major_list' of incorrect type. Expected list, got {type(major_list_old)}")
-		if minor_list_old is not None and not (isinstance(minor_list_old, list)):
-			raise ValueError(f"'minor_list' of incorrect type. Expected list, got {type(minor_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, major_list_old=major_list_old, minor_list_old=minor_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class VersionState(APIObject):
-	gpk: str
-	numeric: int
-	semantic: str
-
-	def __post_init__(self):
-		if not isinstance(self.gpk, str):
-			raise ValueError(f"'gpk' of incorrect type. Expected str, got {type(self.gpk)}")
-		if not isinstance(self.numeric, int):
-			raise ValueError(f"'numeric' of incorrect type. Expected int, got {type(self.numeric)}")
-		if not isinstance(self.semantic, str):
-			raise ValueError(f"'semantic' of incorrect type. Expected str, got {type(self.semantic)}")
-
-	@staticmethod
-	def list_ta(gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, semantic_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if semantic_list_old is not None and not (isinstance(semantic_list_old, list)):
-			raise ValueError(f"'semantic_list' of incorrect type. Expected list, got {type(semantic_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.version_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'gpk_list': gpk_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'semantic_list': semantic_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, gpk_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, semantic_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if gpk_list_old is not None and not (isinstance(gpk_list_old, list)):
-			raise ValueError(f"'gpk_list' of incorrect type. Expected list, got {type(gpk_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if semantic_list_old is not None and not (isinstance(semantic_list_old, list)):
-			raise ValueError(f"'semantic_list' of incorrect type. Expected list, got {type(semantic_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(gpk_list_old=gpk_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, semantic_list_old=semantic_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class System(APIObject):
-	name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.system.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.system.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.system.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectType(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	attributes: dict
-	is_log_dst: bool
-	is_log_src: bool
-	constraints: dict
-	is_lang_dst: bool
-	is_lang_src: bool
-	referencing: dict
-	is_otattr_dst: bool
-	is_otattr_src: bool
-	referenceable: dict
-	do_activate_global_pk2obj: bool
-	object_type_grants_read_access: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.attributes, dict):
-			raise ValueError(f"'attributes' of incorrect type. Expected dict, got {type(self.attributes)}")
-		if not isinstance(self.is_log_dst, bool):
-			raise ValueError(f"'is_log_dst' of incorrect type. Expected bool, got {type(self.is_log_dst)}")
-		if not isinstance(self.is_log_src, bool):
-			raise ValueError(f"'is_log_src' of incorrect type. Expected bool, got {type(self.is_log_src)}")
-		if not isinstance(self.constraints, dict):
-			raise ValueError(f"'constraints' of incorrect type. Expected dict, got {type(self.constraints)}")
-		if not isinstance(self.is_lang_dst, bool):
-			raise ValueError(f"'is_lang_dst' of incorrect type. Expected bool, got {type(self.is_lang_dst)}")
-		if not isinstance(self.is_lang_src, bool):
-			raise ValueError(f"'is_lang_src' of incorrect type. Expected bool, got {type(self.is_lang_src)}")
-		if not isinstance(self.referencing, dict):
-			raise ValueError(f"'referencing' of incorrect type. Expected dict, got {type(self.referencing)}")
-		if not isinstance(self.is_otattr_dst, bool):
-			raise ValueError(f"'is_otattr_dst' of incorrect type. Expected bool, got {type(self.is_otattr_dst)}")
-		if not isinstance(self.is_otattr_src, bool):
-			raise ValueError(f"'is_otattr_src' of incorrect type. Expected bool, got {type(self.is_otattr_src)}")
-		if not isinstance(self.referenceable, dict):
-			raise ValueError(f"'referenceable' of incorrect type. Expected dict, got {type(self.referenceable)}")
-		if not isinstance(self.do_activate_global_pk2obj, bool):
-			raise ValueError(f"'do_activate_global_pk2obj' of incorrect type. Expected bool, got {type(self.do_activate_global_pk2obj)}")
-		if not isinstance(self.object_type_grants_read_access, bool):
-			raise ValueError(f"'object_type_grants_read_access' of incorrect type. Expected bool, got {type(self.object_type_grants_read_access)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Function(APIObject):
-	name: str
-	system: str
-	fq_name: str
-	parameters: dict
-	object_type: str
-	is_returning: bool
-	is_executable: bool
-	is_data_manipulating: bool
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.system, str):
-			raise ValueError(f"'system' of incorrect type. Expected str, got {type(self.system)}")
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.parameters, dict):
-			raise ValueError(f"'parameters' of incorrect type. Expected dict, got {type(self.parameters)}")
-		if not isinstance(self.object_type, str):
-			raise ValueError(f"'object_type' of incorrect type. Expected str, got {type(self.object_type)}")
-		if not isinstance(self.is_returning, bool):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(self.is_returning)}")
-		if not isinstance(self.is_executable, bool):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(self.is_executable)}")
-		if not isinstance(self.is_data_manipulating, bool):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(self.is_data_manipulating)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, parameter_list_old: list = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None, parameter_is_deprecated_old: bool = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if parameter_list_old is not None and not (isinstance(parameter_list_old, list)):
-			raise ValueError(f"'parameter_list' of incorrect type. Expected list, got {type(parameter_list_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-		if parameter_is_deprecated_old is not None and not (isinstance(parameter_is_deprecated_old, bool)):
-			raise ValueError(f"'parameter_is_deprecated' of incorrect type. Expected bool, got {type(parameter_is_deprecated_old)}")
-
-		return {'name': 'wapi.function.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'is_returning': is_returning_old, 'is_executable': is_executable_old, 'parameter_list': parameter_list_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old, 'is_data_manipulating': is_data_manipulating_old, 'parameter_is_deprecated': parameter_is_deprecated_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, is_returning_old: bool = None, is_executable_old: bool = None, parameter_list_old: list = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None, is_data_manipulating_old: bool = None, parameter_is_deprecated_old: bool = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if is_returning_old is not None and not (isinstance(is_returning_old, bool)):
-			raise ValueError(f"'is_returning' of incorrect type. Expected bool, got {type(is_returning_old)}")
-		if is_executable_old is not None and not (isinstance(is_executable_old, bool)):
-			raise ValueError(f"'is_executable' of incorrect type. Expected bool, got {type(is_executable_old)}")
-		if parameter_list_old is not None and not (isinstance(parameter_list_old, list)):
-			raise ValueError(f"'parameter_list' of incorrect type. Expected list, got {type(parameter_list_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-		if is_data_manipulating_old is not None and not (isinstance(is_data_manipulating_old, bool)):
-			raise ValueError(f"'is_data_manipulating' of incorrect type. Expected bool, got {type(is_data_manipulating_old)}")
-		if parameter_is_deprecated_old is not None and not (isinstance(parameter_is_deprecated_old, bool)):
-			raise ValueError(f"'parameter_is_deprecated' of incorrect type. Expected bool, got {type(parameter_is_deprecated_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, is_returning_old=is_returning_old, is_executable_old=is_executable_old, parameter_list_old=parameter_list_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old, is_data_manipulating_old=is_data_manipulating_old, parameter_is_deprecated_old=parameter_is_deprecated_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Exception(APIObject):
-	hint: str
-	error: dict
-	others: dict
-	traceback: list
-	constraint: dict
-	error_type: dict
-	stacked_diag_params: dict
-
-	def __post_init__(self):
-		if self.hint is not None and not isinstance(self.hint, str):
-			raise ValueError(f"'hint' of incorrect type. Expected str, got {type(self.hint)}")
-		if not isinstance(self.error, dict):
-			raise ValueError(f"'error' of incorrect type. Expected dict, got {type(self.error)}")
-		if not isinstance(self.others, dict):
-			raise ValueError(f"'others' of incorrect type. Expected dict, got {type(self.others)}")
-		if not isinstance(self.traceback, list):
-			raise ValueError(f"'traceback' of incorrect type. Expected list, got {type(self.traceback)}")
-		if not isinstance(self.constraint, dict):
-			raise ValueError(f"'constraint' of incorrect type. Expected dict, got {type(self.constraint)}")
-		if not isinstance(self.error_type, dict):
-			raise ValueError(f"'error_type' of incorrect type. Expected dict, got {type(self.error_type)}")
-		if not isinstance(self.stacked_diag_params, dict):
-			raise ValueError(f"'stacked_diag_params' of incorrect type. Expected dict, got {type(self.stacked_diag_params)}")
-
-@dataclass()
-class DataType(APIObject):
-	name: str
-	json_name: str
-	text_length: int
-	language_dict: dict
-	operator_list: list
-	format_literal: str
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.json_name, str):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(self.json_name)}")
-		if self.text_length is not None and not isinstance(self.text_length, int):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(self.text_length)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.operator_list, list):
-			raise ValueError(f"'operator_list' of incorrect type. Expected list, got {type(self.operator_list)}")
-		if self.format_literal is not None and not isinstance(self.format_literal, str):
-			raise ValueError(f"'format_literal' of incorrect type. Expected str, got {type(self.format_literal)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.data_type.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'json_name': json_name_old, 'fetch_limit': fetch_limit_old, 'text_length': text_length_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, json_name_old: str = None, fetch_limit_old: int = None, text_length_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if json_name_old is not None and not (isinstance(json_name_old, str)):
-			raise ValueError(f"'json_name' of incorrect type. Expected str, got {type(json_name_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if text_length_old is not None and not (isinstance(text_length_old, int) or isinstance(text_length_old, ExplicitNull)):
-			raise ValueError(f"'text_length' of incorrect type. Expected int, got {type(text_length_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(json_name_old=json_name_old, fetch_limit_old=fetch_limit_old, text_length_old=text_length_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class DataTypeOperator(APIObject):
-	name: str
-	language_dict: dict
-	data_type_list: list
-
-	def __post_init__(self):
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.data_type_list, list):
-			raise ValueError(f"'data_type_list' of incorrect type. Expected list, got {type(self.data_type_list)}")
-
-	@staticmethod
-	def create_ta(language_dict_new: dict) -> dict:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		return {'name': 'wapi.data_type_operator.create', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def create(cls, api_session: APISession, language_dict_new: dict) -> list:
-		if not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.create_ta(language_dict_new=language_dict_new, )])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def delete_ta(language_dict_old: dict = None) -> dict:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.delete', 'new': _denullify_dict({}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def delete(cls, api_session: APISession, language_dict_old: dict = None) -> list:
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.delete_ta(language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def list_ta(name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.data_type_operator.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name': name_old, 'data_type': data_type_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'language_dict': language_dict_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_old: str = None, data_type_old: str = None, fetch_limit_old: int = None, fetch_offset_old: int = None, language_dict_old: dict = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_old is not None and not (isinstance(name_old, str)):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(name_old)}")
-		if data_type_old is not None and not (isinstance(data_type_old, str)):
-			raise ValueError(f"'data_type' of incorrect type. Expected str, got {type(data_type_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if language_dict_old is not None and not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_old=name_old, data_type_old=data_type_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, language_dict_old=language_dict_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-	@staticmethod
-	def update_ta(language_dict_old: dict, language_dict_new: dict = None) -> dict:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		return {'name': 'wapi.data_type_operator.update', 'new': _denullify_dict({'language_dict': language_dict_new}), 'old': _denullify_dict({'language_dict': language_dict_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def update(cls, api_session: APISession, language_dict_old: dict, language_dict_new: dict = None) -> list:
-		if language_dict_new is not None and not (isinstance(language_dict_new, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_new)}")
-		if not (isinstance(language_dict_old, dict)):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(language_dict_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.update_ta(language_dict_new=language_dict_new, language_dict_old=language_dict_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class MaintState(APIObject):
-	pk: int
-	ts_end: str
-	subject: str
-	duration: str
-	ts_begin: str
-	is_active: bool
-	language_dict: dict
-	cntl_error_code: int
-	cntl_error_type_code: int
-	cntl_error_type_name: str
-
-	def __post_init__(self):
-		if not isinstance(self.pk, int):
-			raise ValueError(f"'pk' of incorrect type. Expected int, got {type(self.pk)}")
-		if not isinstance(self.ts_end, str):
-			raise ValueError(f"'ts_end' of incorrect type. Expected str, got {type(self.ts_end)}")
-		if not isinstance(self.subject, str):
-			raise ValueError(f"'subject' of incorrect type. Expected str, got {type(self.subject)}")
-		if not isinstance(self.duration, str):
-			raise ValueError(f"'duration' of incorrect type. Expected str, got {type(self.duration)}")
-		if not isinstance(self.ts_begin, str):
-			raise ValueError(f"'ts_begin' of incorrect type. Expected str, got {type(self.ts_begin)}")
-		if not isinstance(self.is_active, bool):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(self.is_active)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-		if not isinstance(self.cntl_error_code, int):
-			raise ValueError(f"'cntl_error_code' of incorrect type. Expected int, got {type(self.cntl_error_code)}")
-		if not isinstance(self.cntl_error_type_code, int):
-			raise ValueError(f"'cntl_error_type_code' of incorrect type. Expected int, got {type(self.cntl_error_type_code)}")
-		if not isinstance(self.cntl_error_type_name, str):
-			raise ValueError(f"'cntl_error_type_name' of incorrect type. Expected str, got {type(self.cntl_error_type_name)}")
-
-	@staticmethod
-	def list_ta(is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.maint_state.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'is_active': is_active_old, 'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, is_active_old: bool = None, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if is_active_old is not None and not (isinstance(is_active_old, bool)):
-			raise ValueError(f"'is_active' of incorrect type. Expected bool, got {type(is_active_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(is_active_old=is_active_old, fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class Language(APIObject):
-	tag: str
-	name: str
-	is_default: bool
-
-	def __post_init__(self):
-		if not isinstance(self.tag, str):
-			raise ValueError(f"'tag' of incorrect type. Expected str, got {type(self.tag)}")
-		if not isinstance(self.name, str):
-			raise ValueError(f"'name' of incorrect type. Expected str, got {type(self.name)}")
-		if not isinstance(self.is_default, bool):
-			raise ValueError(f"'is_default' of incorrect type. Expected bool, got {type(self.is_default)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.language.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'name_list': name_list_old, 'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, name_list_old: list = None, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if name_list_old is not None and not (isinstance(name_list_old, list)):
-			raise ValueError(f"'name_list' of incorrect type. Expected list, got {type(name_list_old)}")
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(name_list_old=name_list_old, fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-
-@dataclass()
-class ObjectTypeAttrLangDict(APIObject):
-	fq_name: str
-	language_dict: dict
-
-	def __post_init__(self):
-		if not isinstance(self.fq_name, str):
-			raise ValueError(f"'fq_name' of incorrect type. Expected str, got {type(self.fq_name)}")
-		if not isinstance(self.language_dict, dict):
-			raise ValueError(f"'language_dict' of incorrect type. Expected dict, got {type(self.language_dict)}")
-
-	@staticmethod
-	def list_ta(fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> dict:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		return {'name': 'wapi.object_type_attr_lang_dict.list', 'new': _denullify_dict({}), 'old': _denullify_dict({'fetch_limit': fetch_limit_old, 'system_list': system_list_old, 'fetch_offset': fetch_offset_old, 'object_type_list': object_type_list_old, 'filter_params_dict': filter_params_dict_old, 'sorting_params_list': sorting_params_list_old})}
-
-	# TODO: Consider is_returning
-	@classmethod
-	def list(cls, api_session: APISession, fetch_limit_old: int = None, system_list_old: list = None, fetch_offset_old: int = None, object_type_list_old: list = None, filter_params_dict_old: dict = None, sorting_params_list_old: list = None) -> list:
-		if fetch_limit_old is not None and not (isinstance(fetch_limit_old, int)):
-			raise ValueError(f"'fetch_limit' of incorrect type. Expected int, got {type(fetch_limit_old)}")
-		if system_list_old is not None and not (isinstance(system_list_old, list)):
-			raise ValueError(f"'system_list' of incorrect type. Expected list, got {type(system_list_old)}")
-		if fetch_offset_old is not None and not (isinstance(fetch_offset_old, int)):
-			raise ValueError(f"'fetch_offset' of incorrect type. Expected int, got {type(fetch_offset_old)}")
-		if object_type_list_old is not None and not (isinstance(object_type_list_old, list)):
-			raise ValueError(f"'object_type_list' of incorrect type. Expected list, got {type(object_type_list_old)}")
-		if filter_params_dict_old is not None and not (isinstance(filter_params_dict_old, dict)):
-			raise ValueError(f"'filter_params_dict' of incorrect type. Expected dict, got {type(filter_params_dict_old)}")
-		if sorting_params_list_old is not None and not (isinstance(sorting_params_list_old, list)):
-			raise ValueError(f"'sorting_params_list' of incorrect type. Expected list, got {type(sorting_params_list_old)}")
-
-		res = api_session.session.post(api_session.base_url + '/wapi/transaction/execute', json=[cls.list_ta(fetch_limit_old=fetch_limit_old, system_list_old=system_list_old, fetch_offset_old=fetch_offset_old, object_type_list_old=object_type_list_old, filter_params_dict_old=filter_params_dict_old, sorting_params_list_old=sorting_params_list_old)])
-		if not res.ok:
-			raise ExecutionError(res.status_code, res.reason, res.json() if "json" in res.headers["content-type"] else res.text)
-		return [cls(**s) for s in res.json()[0]]
-- 
GitLab