# Code generated by jtd-codegen for Python v0.3.1

import re
from dataclasses import dataclass
from datetime import datetime, timedelta, timezone
from typing import Any, Dict, List, Optional, Union, get_args, get_origin


@dataclass
class Senzingsdk:
    value: 'Any'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Senzingsdk':
        return cls(_from_json_data(Any, data))

    def to_json_data(self) -> Any:
        return _to_json_data(self.value)

@dataclass
class AdditionalScores:
    full_score: 'int'
    generation_match: 'int'
    gnr_fn: 'int'
    gnr_gn: 'int'
    gnr_on: 'int'
    gnr_sn: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'AdditionalScores':
        return cls(
            _from_json_data(int, data.get("FULL_SCORE")),
            _from_json_data(int, data.get("GENERATION_MATCH")),
            _from_json_data(int, data.get("GNR_FN")),
            _from_json_data(int, data.get("GNR_GN")),
            _from_json_data(int, data.get("GNR_ON")),
            _from_json_data(int, data.get("GNR_SN")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FULL_SCORE"] = _to_json_data(self.full_score)
        data["GENERATION_MATCH"] = _to_json_data(self.generation_match)
        data["GNR_FN"] = _to_json_data(self.gnr_fn)
        data["GNR_GN"] = _to_json_data(self.gnr_gn)
        data["GNR_ON"] = _to_json_data(self.gnr_on)
        data["GNR_SN"] = _to_json_data(self.gnr_sn)
        return data

@dataclass
class AffectedEntity:
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'AffectedEntity':
        return cls(
            _from_json_data(int, data.get("ENTITY_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        return data

@dataclass
class CfgAttr:
    attr_class: 'str'
    attr_code: 'str'
    attr_id: 'int'
    default_value: 'str'
    felem_code: 'str'
    felem_req: 'str'
    ftype_code: 'str'
    internal: 'str'
    xxx_advanced: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgAttr':
        return cls(
            _from_json_data(str, data.get("ATTR_CLASS")),
            _from_json_data(str, data.get("ATTR_CODE")),
            _from_json_data(int, data.get("ATTR_ID")),
            _from_json_data(str, data.get("DEFAULT_VALUE")),
            _from_json_data(str, data.get("FELEM_CODE")),
            _from_json_data(str, data.get("FELEM_REQ")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(str, data.get("INTERNAL")),
            _from_json_data(str, data.get("XXX_ADVANCED")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ATTR_CLASS"] = _to_json_data(self.attr_class)
        data["ATTR_CODE"] = _to_json_data(self.attr_code)
        data["ATTR_ID"] = _to_json_data(self.attr_id)
        data["DEFAULT_VALUE"] = _to_json_data(self.default_value)
        data["FELEM_CODE"] = _to_json_data(self.felem_code)
        data["FELEM_REQ"] = _to_json_data(self.felem_req)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["INTERNAL"] = _to_json_data(self.internal)
        data["XXX_ADVANCED"] = _to_json_data(self.xxx_advanced)
        return data

@dataclass
class CfgCfbom:
    cfcall_id: 'int'
    exec_order: 'int'
    felem_id: 'int'
    ftype_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgCfbom':
        return cls(
            _from_json_data(int, data.get("CFCALL_ID")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CFCALL_ID"] = _to_json_data(self.cfcall_id)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        return data

@dataclass
class CfgCfcall:
    cfcall_id: 'int'
    cfunc_id: 'int'
    ftype_id: 'int'
    xxx_exec_order: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgCfcall':
        return cls(
            _from_json_data(int, data.get("CFCALL_ID")),
            _from_json_data(int, data.get("CFUNC_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("XXX_EXEC_ORDER")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CFCALL_ID"] = _to_json_data(self.cfcall_id)
        data["CFUNC_ID"] = _to_json_data(self.cfunc_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["XXX_EXEC_ORDER"] = _to_json_data(self.xxx_exec_order)
        return data

@dataclass
class CfgCfrtn:
    cfrtn_id: 'int'
    cfunc_id: 'int'
    cfunc_rtnval: 'str'
    close_score: 'int'
    exec_order: 'int'
    ftype_id: 'int'
    likely_score: 'int'
    plausible_score: 'int'
    same_score: 'int'
    un_likely_score: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgCfrtn':
        return cls(
            _from_json_data(int, data.get("CFRTN_ID")),
            _from_json_data(int, data.get("CFUNC_ID")),
            _from_json_data(str, data.get("CFUNC_RTNVAL")),
            _from_json_data(int, data.get("CLOSE_SCORE")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("LIKELY_SCORE")),
            _from_json_data(int, data.get("PLAUSIBLE_SCORE")),
            _from_json_data(int, data.get("SAME_SCORE")),
            _from_json_data(int, data.get("UN_LIKELY_SCORE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CFRTN_ID"] = _to_json_data(self.cfrtn_id)
        data["CFUNC_ID"] = _to_json_data(self.cfunc_id)
        data["CFUNC_RTNVAL"] = _to_json_data(self.cfunc_rtnval)
        data["CLOSE_SCORE"] = _to_json_data(self.close_score)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["LIKELY_SCORE"] = _to_json_data(self.likely_score)
        data["PLAUSIBLE_SCORE"] = _to_json_data(self.plausible_score)
        data["SAME_SCORE"] = _to_json_data(self.same_score)
        data["UN_LIKELY_SCORE"] = _to_json_data(self.un_likely_score)
        return data

@dataclass
class CfgCfunc:
    anon_support: 'str'
    cfunc_code: 'str'
    cfunc_desc: 'str'
    cfunc_id: 'int'
    connect_str: 'str'
    xxx_func_lib: 'str'
    xxx_func_ver: 'str'
    xxx_java_class_name: 'str'
    xxx_language: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgCfunc':
        return cls(
            _from_json_data(str, data.get("ANON_SUPPORT")),
            _from_json_data(str, data.get("CFUNC_CODE")),
            _from_json_data(str, data.get("CFUNC_DESC")),
            _from_json_data(int, data.get("CFUNC_ID")),
            _from_json_data(str, data.get("CONNECT_STR")),
            _from_json_data(str, data.get("XXX_FUNC_LIB")),
            _from_json_data(str, data.get("XXX_FUNC_VER")),
            _from_json_data(str, data.get("XXX_JAVA_CLASS_NAME")),
            _from_json_data(str, data.get("XXX_LANGUAGE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ANON_SUPPORT"] = _to_json_data(self.anon_support)
        data["CFUNC_CODE"] = _to_json_data(self.cfunc_code)
        data["CFUNC_DESC"] = _to_json_data(self.cfunc_desc)
        data["CFUNC_ID"] = _to_json_data(self.cfunc_id)
        data["CONNECT_STR"] = _to_json_data(self.connect_str)
        data["XXX_FUNC_LIB"] = _to_json_data(self.xxx_func_lib)
        data["XXX_FUNC_VER"] = _to_json_data(self.xxx_func_ver)
        data["XXX_JAVA_CLASS_NAME"] = _to_json_data(self.xxx_java_class_name)
        data["XXX_LANGUAGE"] = _to_json_data(self.xxx_language)
        return data

@dataclass
class CfgDfbom:
    dfcall_id: 'int'
    exec_order: 'int'
    felem_id: 'int'
    ftype_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgDfbom':
        return cls(
            _from_json_data(int, data.get("DFCALL_ID")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DFCALL_ID"] = _to_json_data(self.dfcall_id)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        return data

@dataclass
class CfgDfcall:
    dfcall_id: 'int'
    dfunc_id: 'int'
    ftype_id: 'int'
    xxx_exec_order: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgDfcall':
        return cls(
            _from_json_data(int, data.get("DFCALL_ID")),
            _from_json_data(int, data.get("DFUNC_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("XXX_EXEC_ORDER")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DFCALL_ID"] = _to_json_data(self.dfcall_id)
        data["DFUNC_ID"] = _to_json_data(self.dfunc_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["XXX_EXEC_ORDER"] = _to_json_data(self.xxx_exec_order)
        return data

@dataclass
class CfgDfunc:
    anon_support: 'str'
    connect_str: 'str'
    dfunc_code: 'str'
    dfunc_desc: 'str'
    dfunc_id: 'int'
    xxx_func_lib: 'str'
    xxx_func_ver: 'str'
    xxx_java_class_name: 'str'
    xxx_language: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgDfunc':
        return cls(
            _from_json_data(str, data.get("ANON_SUPPORT")),
            _from_json_data(str, data.get("CONNECT_STR")),
            _from_json_data(str, data.get("DFUNC_CODE")),
            _from_json_data(str, data.get("DFUNC_DESC")),
            _from_json_data(int, data.get("DFUNC_ID")),
            _from_json_data(str, data.get("XXX_FUNC_LIB")),
            _from_json_data(str, data.get("XXX_FUNC_VER")),
            _from_json_data(str, data.get("XXX_JAVA_CLASS_NAME")),
            _from_json_data(str, data.get("XXX_LANGUAGE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ANON_SUPPORT"] = _to_json_data(self.anon_support)
        data["CONNECT_STR"] = _to_json_data(self.connect_str)
        data["DFUNC_CODE"] = _to_json_data(self.dfunc_code)
        data["DFUNC_DESC"] = _to_json_data(self.dfunc_desc)
        data["DFUNC_ID"] = _to_json_data(self.dfunc_id)
        data["XXX_FUNC_LIB"] = _to_json_data(self.xxx_func_lib)
        data["XXX_FUNC_VER"] = _to_json_data(self.xxx_func_ver)
        data["XXX_JAVA_CLASS_NAME"] = _to_json_data(self.xxx_java_class_name)
        data["XXX_LANGUAGE"] = _to_json_data(self.xxx_language)
        return data

@dataclass
class CfgDsrc:
    dsrc_code: 'str'
    dsrc_desc: 'str'
    dsrc_id: 'int'
    retention_level: 'str'
    xxx_conversational: 'str'
    xxx_dsrc_rely: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgDsrc':
        return cls(
            _from_json_data(str, data.get("DSRC_CODE")),
            _from_json_data(str, data.get("DSRC_DESC")),
            _from_json_data(int, data.get("DSRC_ID")),
            _from_json_data(str, data.get("RETENTION_LEVEL")),
            _from_json_data(str, data.get("XXX_CONVERSATIONAL")),
            _from_json_data(int, data.get("XXX_DSRC_RELY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DSRC_CODE"] = _to_json_data(self.dsrc_code)
        data["DSRC_DESC"] = _to_json_data(self.dsrc_desc)
        data["DSRC_ID"] = _to_json_data(self.dsrc_id)
        data["RETENTION_LEVEL"] = _to_json_data(self.retention_level)
        data["XXX_CONVERSATIONAL"] = _to_json_data(self.xxx_conversational)
        data["XXX_DSRC_RELY"] = _to_json_data(self.xxx_dsrc_rely)
        return data

@dataclass
class CfgDsrcInterest:
    xxx_dsrc_id: 'int'
    xxx_interest_flag: 'str'
    xxx_max_degree: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgDsrcInterest':
        return cls(
            _from_json_data(int, data.get("XXX_DSRC_ID")),
            _from_json_data(str, data.get("XXX_INTEREST_FLAG")),
            _from_json_data(int, data.get("XXX_MAX_DEGREE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_DSRC_ID"] = _to_json_data(self.xxx_dsrc_id)
        data["XXX_INTEREST_FLAG"] = _to_json_data(self.xxx_interest_flag)
        data["XXX_MAX_DEGREE"] = _to_json_data(self.xxx_max_degree)
        return data

@dataclass
class CfgEbom:
    xxx_etype_id: 'int'
    xxx_exec_order: 'int'
    xxx_ftype_id: 'int'
    xxx_utype_code: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEbom':
        return cls(
            _from_json_data(int, data.get("XXX_ETYPE_ID")),
            _from_json_data(int, data.get("XXX_EXEC_ORDER")),
            _from_json_data(int, data.get("XXX_FTYPE_ID")),
            _from_json_data(str, data.get("XXX_UTYPE_CODE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_ETYPE_ID"] = _to_json_data(self.xxx_etype_id)
        data["XXX_EXEC_ORDER"] = _to_json_data(self.xxx_exec_order)
        data["XXX_FTYPE_ID"] = _to_json_data(self.xxx_ftype_id)
        data["XXX_UTYPE_CODE"] = _to_json_data(self.xxx_utype_code)
        return data

@dataclass
class CfgEclass:
    xxx_eclass_code: 'str'
    xxx_eclass_desc: 'str'
    xxx_eclass_id: 'int'
    xxx_resolve: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEclass':
        return cls(
            _from_json_data(str, data.get("XXX_ECLASS_CODE")),
            _from_json_data(str, data.get("XXX_ECLASS_DESC")),
            _from_json_data(int, data.get("XXX_ECLASS_ID")),
            _from_json_data(str, data.get("XXX_RESOLVE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_ECLASS_CODE"] = _to_json_data(self.xxx_eclass_code)
        data["XXX_ECLASS_DESC"] = _to_json_data(self.xxx_eclass_desc)
        data["XXX_ECLASS_ID"] = _to_json_data(self.xxx_eclass_id)
        data["XXX_RESOLVE"] = _to_json_data(self.xxx_resolve)
        return data

@dataclass
class CfgEfbom:
    efcall_id: 'int'
    exec_order: 'int'
    felem_id: 'int'
    felem_req: 'str'
    ftype_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEfbom':
        return cls(
            _from_json_data(int, data.get("EFCALL_ID")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(str, data.get("FELEM_REQ")),
            _from_json_data(int, data.get("FTYPE_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["EFCALL_ID"] = _to_json_data(self.efcall_id)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FELEM_REQ"] = _to_json_data(self.felem_req)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        return data

@dataclass
class CfgEfcall:
    efcall_id: 'int'
    efeat_ftype_id: 'int'
    efunc_id: 'int'
    exec_order: 'int'
    felem_id: 'int'
    ftype_id: 'int'
    is_virtual: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEfcall':
        return cls(
            _from_json_data(int, data.get("EFCALL_ID")),
            _from_json_data(int, data.get("EFEAT_FTYPE_ID")),
            _from_json_data(int, data.get("EFUNC_ID")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(str, data.get("IS_VIRTUAL")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["EFCALL_ID"] = _to_json_data(self.efcall_id)
        data["EFEAT_FTYPE_ID"] = _to_json_data(self.efeat_ftype_id)
        data["EFUNC_ID"] = _to_json_data(self.efunc_id)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["IS_VIRTUAL"] = _to_json_data(self.is_virtual)
        return data

@dataclass
class CfgEfunc:
    connect_str: 'str'
    efunc_code: 'str'
    efunc_desc: 'str'
    efunc_id: 'int'
    xxx_func_lib: 'str'
    xxx_func_ver: 'str'
    xxx_java_class_name: 'str'
    xxx_language: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEfunc':
        return cls(
            _from_json_data(str, data.get("CONNECT_STR")),
            _from_json_data(str, data.get("EFUNC_CODE")),
            _from_json_data(str, data.get("EFUNC_DESC")),
            _from_json_data(int, data.get("EFUNC_ID")),
            _from_json_data(str, data.get("XXX_FUNC_LIB")),
            _from_json_data(str, data.get("XXX_FUNC_VER")),
            _from_json_data(str, data.get("XXX_JAVA_CLASS_NAME")),
            _from_json_data(str, data.get("XXX_LANGUAGE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONNECT_STR"] = _to_json_data(self.connect_str)
        data["EFUNC_CODE"] = _to_json_data(self.efunc_code)
        data["EFUNC_DESC"] = _to_json_data(self.efunc_desc)
        data["EFUNC_ID"] = _to_json_data(self.efunc_id)
        data["XXX_FUNC_LIB"] = _to_json_data(self.xxx_func_lib)
        data["XXX_FUNC_VER"] = _to_json_data(self.xxx_func_ver)
        data["XXX_JAVA_CLASS_NAME"] = _to_json_data(self.xxx_java_class_name)
        data["XXX_LANGUAGE"] = _to_json_data(self.xxx_language)
        return data

@dataclass
class CfgErfrag:
    erfrag_code: 'str'
    erfrag_depends: 'str'
    erfrag_desc: 'str'
    erfrag_id: 'int'
    erfrag_source: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgErfrag':
        return cls(
            _from_json_data(str, data.get("ERFRAG_CODE")),
            _from_json_data(str, data.get("ERFRAG_DEPENDS")),
            _from_json_data(str, data.get("ERFRAG_DESC")),
            _from_json_data(int, data.get("ERFRAG_ID")),
            _from_json_data(str, data.get("ERFRAG_SOURCE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ERFRAG_CODE"] = _to_json_data(self.erfrag_code)
        data["ERFRAG_DEPENDS"] = _to_json_data(self.erfrag_depends)
        data["ERFRAG_DESC"] = _to_json_data(self.erfrag_desc)
        data["ERFRAG_ID"] = _to_json_data(self.erfrag_id)
        data["ERFRAG_SOURCE"] = _to_json_data(self.erfrag_source)
        return data

@dataclass
class CfgErrule:
    disq_erfrag_code: 'str'
    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    errule_id: 'int'
    errule_tier: 'int'
    qual_erfrag_code: 'str'
    relate: 'str'
    resolve: 'str'
    rtype_id: 'int'
    xxx_errule_desc: 'str'
    xxx_ref_score: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgErrule':
        return cls(
            _from_json_data(str, data.get("DISQ_ERFRAG_CODE")),
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(int, data.get("ERRULE_ID")),
            _from_json_data(int, data.get("ERRULE_TIER")),
            _from_json_data(str, data.get("QUAL_ERFRAG_CODE")),
            _from_json_data(str, data.get("RELATE")),
            _from_json_data(str, data.get("RESOLVE")),
            _from_json_data(int, data.get("RTYPE_ID")),
            _from_json_data(str, data.get("XXX_ERRULE_DESC")),
            _from_json_data(int, data.get("XXX_REF_SCORE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DISQ_ERFRAG_CODE"] = _to_json_data(self.disq_erfrag_code)
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["ERRULE_ID"] = _to_json_data(self.errule_id)
        data["ERRULE_TIER"] = _to_json_data(self.errule_tier)
        data["QUAL_ERFRAG_CODE"] = _to_json_data(self.qual_erfrag_code)
        data["RELATE"] = _to_json_data(self.relate)
        data["RESOLVE"] = _to_json_data(self.resolve)
        data["RTYPE_ID"] = _to_json_data(self.rtype_id)
        data["XXX_ERRULE_DESC"] = _to_json_data(self.xxx_errule_desc)
        data["XXX_REF_SCORE"] = _to_json_data(self.xxx_ref_score)
        return data

@dataclass
class CfgEtype:
    xxx_eclass_id: 'int'
    xxx_etype_code: 'str'
    xxx_etype_desc: 'str'
    xxx_etype_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgEtype':
        return cls(
            _from_json_data(int, data.get("XXX_ECLASS_ID")),
            _from_json_data(str, data.get("XXX_ETYPE_CODE")),
            _from_json_data(str, data.get("XXX_ETYPE_DESC")),
            _from_json_data(int, data.get("XXX_ETYPE_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_ECLASS_ID"] = _to_json_data(self.xxx_eclass_id)
        data["XXX_ETYPE_CODE"] = _to_json_data(self.xxx_etype_code)
        data["XXX_ETYPE_DESC"] = _to_json_data(self.xxx_etype_desc)
        data["XXX_ETYPE_ID"] = _to_json_data(self.xxx_etype_id)
        return data

@dataclass
class CfgFbom:
    derived: 'str'
    display_level: 'int'
    exec_order: 'int'
    felem_id: 'int'
    ftype_id: 'int'
    xxx_display_delim: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgFbom':
        return cls(
            _from_json_data(str, data.get("DERIVED")),
            _from_json_data(int, data.get("DISPLAY_LEVEL")),
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(str, data.get("XXX_DISPLAY_DELIM")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DERIVED"] = _to_json_data(self.derived)
        data["DISPLAY_LEVEL"] = _to_json_data(self.display_level)
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["XXX_DISPLAY_DELIM"] = _to_json_data(self.xxx_display_delim)
        return data

@dataclass
class CfgFbovr:
    ftype_excl: 'str'
    ftype_freq: 'str'
    ftype_id: 'int'
    ftype_stab: 'str'
    utype_code: 'str'
    xxx_eclass_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgFbovr':
        return cls(
            _from_json_data(str, data.get("FTYPE_EXCL")),
            _from_json_data(str, data.get("FTYPE_FREQ")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(str, data.get("FTYPE_STAB")),
            _from_json_data(str, data.get("UTYPE_CODE")),
            _from_json_data(int, data.get("XXX_ECLASS_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FTYPE_EXCL"] = _to_json_data(self.ftype_excl)
        data["FTYPE_FREQ"] = _to_json_data(self.ftype_freq)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["FTYPE_STAB"] = _to_json_data(self.ftype_stab)
        data["UTYPE_CODE"] = _to_json_data(self.utype_code)
        data["XXX_ECLASS_ID"] = _to_json_data(self.xxx_eclass_id)
        return data

@dataclass
class CfgFclass:
    fclass_code: 'str'
    fclass_desc: 'str'
    fclass_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgFclass':
        return cls(
            _from_json_data(str, data.get("FCLASS_CODE")),
            _from_json_data(str, data.get("FCLASS_DESC")),
            _from_json_data(int, data.get("FCLASS_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FCLASS_CODE"] = _to_json_data(self.fclass_code)
        data["FCLASS_DESC"] = _to_json_data(self.fclass_desc)
        data["FCLASS_ID"] = _to_json_data(self.fclass_id)
        return data

@dataclass
class CfgFelem:
    data_type: 'str'
    felem_code: 'str'
    felem_desc: 'str'
    felem_id: 'int'
    xxx_tokenize: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgFelem':
        return cls(
            _from_json_data(str, data.get("DATA_TYPE")),
            _from_json_data(str, data.get("FELEM_CODE")),
            _from_json_data(str, data.get("FELEM_DESC")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(str, data.get("XXX_TOKENIZE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_TYPE"] = _to_json_data(self.data_type)
        data["FELEM_CODE"] = _to_json_data(self.felem_code)
        data["FELEM_DESC"] = _to_json_data(self.felem_desc)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["XXX_TOKENIZE"] = _to_json_data(self.xxx_tokenize)
        return data

@dataclass
class CfgFtype:
    anonymize: 'str'
    derived: 'str'
    fclass_id: 'int'
    ftype_code: 'str'
    ftype_desc: 'str'
    ftype_excl: 'str'
    ftype_freq: 'str'
    ftype_id: 'int'
    ftype_stab: 'str'
    persist_history: 'str'
    rtype_id: 'int'
    show_in_match_key: 'str'
    used_for_cand: 'str'
    version: 'int'
    xxx_derivation: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgFtype':
        return cls(
            _from_json_data(str, data.get("ANONYMIZE")),
            _from_json_data(str, data.get("DERIVED")),
            _from_json_data(int, data.get("FCLASS_ID")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(str, data.get("FTYPE_DESC")),
            _from_json_data(str, data.get("FTYPE_EXCL")),
            _from_json_data(str, data.get("FTYPE_FREQ")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(str, data.get("FTYPE_STAB")),
            _from_json_data(str, data.get("PERSIST_HISTORY")),
            _from_json_data(int, data.get("RTYPE_ID")),
            _from_json_data(str, data.get("SHOW_IN_MATCH_KEY")),
            _from_json_data(str, data.get("USED_FOR_CAND")),
            _from_json_data(int, data.get("VERSION")),
            _from_json_data(str, data.get("XXX_DERIVATION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ANONYMIZE"] = _to_json_data(self.anonymize)
        data["DERIVED"] = _to_json_data(self.derived)
        data["FCLASS_ID"] = _to_json_data(self.fclass_id)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["FTYPE_DESC"] = _to_json_data(self.ftype_desc)
        data["FTYPE_EXCL"] = _to_json_data(self.ftype_excl)
        data["FTYPE_FREQ"] = _to_json_data(self.ftype_freq)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["FTYPE_STAB"] = _to_json_data(self.ftype_stab)
        data["PERSIST_HISTORY"] = _to_json_data(self.persist_history)
        data["RTYPE_ID"] = _to_json_data(self.rtype_id)
        data["SHOW_IN_MATCH_KEY"] = _to_json_data(self.show_in_match_key)
        data["USED_FOR_CAND"] = _to_json_data(self.used_for_cand)
        data["VERSION"] = _to_json_data(self.version)
        data["XXX_DERIVATION"] = _to_json_data(self.xxx_derivation)
        return data

@dataclass
class CfgGenericThreshold:
    behavior: 'str'
    candidate_cap: 'int'
    ftype_id: 'int'
    gplan_id: 'int'
    scoring_cap: 'int'
    send_to_redo: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgGenericThreshold':
        return cls(
            _from_json_data(str, data.get("BEHAVIOR")),
            _from_json_data(int, data.get("CANDIDATE_CAP")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("GPLAN_ID")),
            _from_json_data(int, data.get("SCORING_CAP")),
            _from_json_data(str, data.get("SEND_TO_REDO")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["BEHAVIOR"] = _to_json_data(self.behavior)
        data["CANDIDATE_CAP"] = _to_json_data(self.candidate_cap)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["GPLAN_ID"] = _to_json_data(self.gplan_id)
        data["SCORING_CAP"] = _to_json_data(self.scoring_cap)
        data["SEND_TO_REDO"] = _to_json_data(self.send_to_redo)
        return data

@dataclass
class CfgGplan:
    gplan_code: 'str'
    gplan_desc: 'str'
    gplan_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgGplan':
        return cls(
            _from_json_data(str, data.get("GPLAN_CODE")),
            _from_json_data(str, data.get("GPLAN_DESC")),
            _from_json_data(int, data.get("GPLAN_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["GPLAN_CODE"] = _to_json_data(self.gplan_code)
        data["GPLAN_DESC"] = _to_json_data(self.gplan_desc)
        data["GPLAN_ID"] = _to_json_data(self.gplan_id)
        return data

@dataclass
class CfgLens:
    xxx_lens_code: 'str'
    xxx_lens_desc: 'str'
    xxx_lens_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgLens':
        return cls(
            _from_json_data(str, data.get("XXX_LENS_CODE")),
            _from_json_data(str, data.get("XXX_LENS_DESC")),
            _from_json_data(int, data.get("XXX_LENS_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_LENS_CODE"] = _to_json_data(self.xxx_lens_code)
        data["XXX_LENS_DESC"] = _to_json_data(self.xxx_lens_desc)
        data["XXX_LENS_ID"] = _to_json_data(self.xxx_lens_id)
        return data

@dataclass
class CfgLensrl:
    value: 'List[Fixme]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgLensrl':
        return cls(_from_json_data(List[Fixme], data))

    def to_json_data(self) -> Any:
        return _to_json_data(self.value)

@dataclass
class CfgRclass:
    is_disclosed: 'str'
    """
    Indicates if this is a disclosed relationship.
    """

    rclass_code: 'str'
    rclass_desc: 'str'
    rclass_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgRclass':
        return cls(
            _from_json_data(str, data.get("IS_DISCLOSED")),
            _from_json_data(str, data.get("RCLASS_CODE")),
            _from_json_data(str, data.get("RCLASS_DESC")),
            _from_json_data(int, data.get("RCLASS_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["IS_DISCLOSED"] = _to_json_data(self.is_disclosed)
        data["RCLASS_CODE"] = _to_json_data(self.rclass_code)
        data["RCLASS_DESC"] = _to_json_data(self.rclass_desc)
        data["RCLASS_ID"] = _to_json_data(self.rclass_id)
        return data

@dataclass
class CfgRtype:
    break_res: 'str'
    rclass_id: 'int'
    rtype_code: 'str'
    rtype_desc: 'str'
    rtype_id: 'int'
    xxx_rel_strength: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgRtype':
        return cls(
            _from_json_data(str, data.get("BREAK_RES")),
            _from_json_data(int, data.get("RCLASS_ID")),
            _from_json_data(str, data.get("RTYPE_CODE")),
            _from_json_data(str, data.get("RTYPE_DESC")),
            _from_json_data(int, data.get("RTYPE_ID")),
            _from_json_data(int, data.get("XXX_REL_STRENGTH")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["BREAK_RES"] = _to_json_data(self.break_res)
        data["RCLASS_ID"] = _to_json_data(self.rclass_id)
        data["RTYPE_CODE"] = _to_json_data(self.rtype_code)
        data["RTYPE_DESC"] = _to_json_data(self.rtype_desc)
        data["RTYPE_ID"] = _to_json_data(self.rtype_id)
        data["XXX_REL_STRENGTH"] = _to_json_data(self.xxx_rel_strength)
        return data

@dataclass
class CfgSfcall:
    exec_order: 'int'
    felem_id: 'int'
    ftype_id: 'int'
    sfcall_id: 'int'
    sfunc_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgSfcall':
        return cls(
            _from_json_data(int, data.get("EXEC_ORDER")),
            _from_json_data(int, data.get("FELEM_ID")),
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("SFCALL_ID")),
            _from_json_data(int, data.get("SFUNC_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["EXEC_ORDER"] = _to_json_data(self.exec_order)
        data["FELEM_ID"] = _to_json_data(self.felem_id)
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["SFCALL_ID"] = _to_json_data(self.sfcall_id)
        data["SFUNC_ID"] = _to_json_data(self.sfunc_id)
        return data

@dataclass
class CfgSfunc:
    connect_str: 'str'
    sfunc_code: 'str'
    sfunc_desc: 'str'
    sfunc_id: 'int'
    xxx_func_lib: 'str'
    xxx_func_ver: 'str'
    xxx_java_class_name: 'str'
    xxx_language: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CfgSfunc':
        return cls(
            _from_json_data(str, data.get("CONNECT_STR")),
            _from_json_data(str, data.get("SFUNC_CODE")),
            _from_json_data(str, data.get("SFUNC_DESC")),
            _from_json_data(int, data.get("SFUNC_ID")),
            _from_json_data(str, data.get("XXX_FUNC_LIB")),
            _from_json_data(str, data.get("XXX_FUNC_VER")),
            _from_json_data(str, data.get("XXX_JAVA_CLASS_NAME")),
            _from_json_data(str, data.get("XXX_LANGUAGE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONNECT_STR"] = _to_json_data(self.connect_str)
        data["SFUNC_CODE"] = _to_json_data(self.sfunc_code)
        data["SFUNC_DESC"] = _to_json_data(self.sfunc_desc)
        data["SFUNC_ID"] = _to_json_data(self.sfunc_id)
        data["XXX_FUNC_LIB"] = _to_json_data(self.xxx_func_lib)
        data["XXX_FUNC_VER"] = _to_json_data(self.xxx_func_ver)
        data["XXX_JAVA_CLASS_NAME"] = _to_json_data(self.xxx_java_class_name)
        data["XXX_LANGUAGE"] = _to_json_data(self.xxx_language)
        return data

@dataclass
class ConfigBaseVersion:
    build_date: 'str'
    build_number: 'str'
    build_version: 'str'
    compatibility_version: 'CompatibilityVersion'
    version: 'str'
    xxx_product_name: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'ConfigBaseVersion':
        return cls(
            _from_json_data(str, data.get("BUILD_DATE")),
            _from_json_data(str, data.get("BUILD_NUMBER")),
            _from_json_data(str, data.get("BUILD_VERSION")),
            _from_json_data(CompatibilityVersion, data.get("COMPATIBILITY_VERSION")),
            _from_json_data(str, data.get("VERSION")),
            _from_json_data(str, data.get("XXX_PRODUCT_NAME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["BUILD_DATE"] = _to_json_data(self.build_date)
        data["BUILD_NUMBER"] = _to_json_data(self.build_number)
        data["BUILD_VERSION"] = _to_json_data(self.build_version)
        data["COMPATIBILITY_VERSION"] = _to_json_data(self.compatibility_version)
        data["VERSION"] = _to_json_data(self.version)
        data["XXX_PRODUCT_NAME"] = _to_json_data(self.xxx_product_name)
        return data

@dataclass
class CandidateKeysForMatchInfo:
    value: 'Dict[str, List[MatchInfoForAttribute]]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CandidateKeysForMatchInfo':
        return cls(_from_json_data(Dict[str, List[MatchInfoForAttribute]], data))

    def to_json_data(self) -> Any:
        return _to_json_data(self.value)

@dataclass
class CandidateKeysForSearchStatistic:
    feature_types: 'List[FeatureType]'
    summary: 'CandidateKeysSummary'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CandidateKeysForSearchStatistic':
        return cls(
            _from_json_data(List[FeatureType], data.get("FEATURE_TYPES")),
            _from_json_data(CandidateKeysSummary, data.get("SUMMARY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEATURE_TYPES"] = _to_json_data(self.feature_types)
        data["SUMMARY"] = _to_json_data(self.summary)
        return data

@dataclass
class CandidateKeysSummary:
    found: 'int'
    generic: 'int'
    not_found: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CandidateKeysSummary':
        return cls(
            _from_json_data(int, data.get("FOUND")),
            _from_json_data(int, data.get("GENERIC")),
            _from_json_data(int, data.get("NOT_FOUND")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FOUND"] = _to_json_data(self.found)
        data["GENERIC"] = _to_json_data(self.generic)
        data["NOT_FOUND"] = _to_json_data(self.not_found)
        return data

@dataclass
class CompatibilityVersion:
    config_version: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'CompatibilityVersion':
        return cls(
            _from_json_data(str, data.get("CONFIG_VERSION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONFIG_VERSION"] = _to_json_data(self.config_version)
        return data

@dataclass
class Config:
    config_comments: 'str'
    """
    A user-provided description of the configuration.
    """

    config_id: 'int'
    """
    An internally-generated unique identifier of the configuration.
    """

    sys_create_dt: 'str'
    """
    The timestamp of the original registration of the configuration.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'Config':
        return cls(
            _from_json_data(str, data.get("CONFIG_COMMENTS")),
            _from_json_data(int, data.get("CONFIG_ID")),
            _from_json_data(str, data.get("SYS_CREATE_DT")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONFIG_COMMENTS"] = _to_json_data(self.config_comments)
        data["CONFIG_ID"] = _to_json_data(self.config_id)
        data["SYS_CREATE_DT"] = _to_json_data(self.sys_create_dt)
        return data

@dataclass
class Confirmation:
    additional_scores: 'AdditionalScores'
    candidate_feat_desc: 'str'
    candidate_feat_id: 'int'
    candidate_feat_usage_type: 'str'
    ftype_code: 'str'
    """
    Internal use.
    """

    inbound_feat_desc: 'str'
    inbound_feat_id: 'int'
    inbound_feat_usage_type: 'str'
    score: 'int'
    score_behavior: 'str'
    score_bucket: 'str'
    source: 'str'
    token: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Confirmation':
        return cls(
            _from_json_data(AdditionalScores, data.get("ADDITIONAL_SCORES")),
            _from_json_data(str, data.get("CANDIDATE_FEAT_DESC")),
            _from_json_data(int, data.get("CANDIDATE_FEAT_ID")),
            _from_json_data(str, data.get("CANDIDATE_FEAT_USAGE_TYPE")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(str, data.get("INBOUND_FEAT_DESC")),
            _from_json_data(int, data.get("INBOUND_FEAT_ID")),
            _from_json_data(str, data.get("INBOUND_FEAT_USAGE_TYPE")),
            _from_json_data(int, data.get("SCORE")),
            _from_json_data(str, data.get("SCORE_BEHAVIOR")),
            _from_json_data(str, data.get("SCORE_BUCKET")),
            _from_json_data(str, data.get("SOURCE")),
            _from_json_data(str, data.get("TOKEN")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ADDITIONAL_SCORES"] = _to_json_data(self.additional_scores)
        data["CANDIDATE_FEAT_DESC"] = _to_json_data(self.candidate_feat_desc)
        data["CANDIDATE_FEAT_ID"] = _to_json_data(self.candidate_feat_id)
        data["CANDIDATE_FEAT_USAGE_TYPE"] = _to_json_data(self.candidate_feat_usage_type)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["INBOUND_FEAT_DESC"] = _to_json_data(self.inbound_feat_desc)
        data["INBOUND_FEAT_ID"] = _to_json_data(self.inbound_feat_id)
        data["INBOUND_FEAT_USAGE_TYPE"] = _to_json_data(self.inbound_feat_usage_type)
        data["SCORE"] = _to_json_data(self.score)
        data["SCORE_BEHAVIOR"] = _to_json_data(self.score_behavior)
        data["SCORE_BUCKET"] = _to_json_data(self.score_bucket)
        data["SOURCE"] = _to_json_data(self.source)
        data["TOKEN"] = _to_json_data(self.token)
        return data

@dataclass
class DataSource:
    dsrc_code: 'str'
    """
    The unique text identifier of the datasource. It should be UPPER_CASE ASCII
    without spaces. It will be used as a JSON key.
    """

    dsrc_id: 'int'
    """
    The unique internal integer identifier of the datasource.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'DataSource':
        return cls(
            _from_json_data(str, data.get("DSRC_CODE")),
            _from_json_data(int, data.get("DSRC_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DSRC_CODE"] = _to_json_data(self.dsrc_code)
        data["DSRC_ID"] = _to_json_data(self.dsrc_id)
        return data

@dataclass
class DisclosedRelationsForMatchInfo:
    domain: 'str'
    entity_roles: 'List[EntityRoles]'
    related_roles: 'List[RelatedRoles]'
    rel_link: 'List[RelLink]'
    xxx_rel_anchor: 'List[RelAnchor]'
    xxx_rel_pointer: 'List[RelPointer]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'DisclosedRelationsForMatchInfo':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(List[EntityRoles], data.get("ENTITY_ROLES")),
            _from_json_data(List[RelatedRoles], data.get("RELATED_ROLES")),
            _from_json_data(List[RelLink], data.get("REL_LINK")),
            _from_json_data(List[RelAnchor], data.get("XXX_REL_ANCHOR")),
            _from_json_data(List[RelPointer], data.get("XXX_REL_POINTER")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["ENTITY_ROLES"] = _to_json_data(self.entity_roles)
        data["RELATED_ROLES"] = _to_json_data(self.related_roles)
        data["REL_LINK"] = _to_json_data(self.rel_link)
        data["XXX_REL_ANCHOR"] = _to_json_data(self.xxx_rel_anchor)
        data["XXX_REL_POINTER"] = _to_json_data(self.xxx_rel_pointer)
        return data

@dataclass
class DisclosedRelationsForMatchInfoForWhy:
    domain: 'str'
    feat_id: 'int'
    feat_usage_type: 'str'
    linked_feat_id: 'int'
    linked_feat_type: 'str'
    rel_anchor: 'List[RelAnchor]'
    rel_link: 'List[RelLink]'
    rel_pointer: 'List[RelPointer]'
    xxx_feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    xxx_linked_feat_desc: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'DisclosedRelationsForMatchInfoForWhy':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(int, data.get("FEAT_ID")),
            _from_json_data(str, data.get("FEAT_USAGE_TYPE")),
            _from_json_data(int, data.get("LINKED_FEAT_ID")),
            _from_json_data(str, data.get("LINKED_FEAT_TYPE")),
            _from_json_data(List[RelAnchor], data.get("REL_ANCHOR")),
            _from_json_data(List[RelLink], data.get("REL_LINK")),
            _from_json_data(List[RelPointer], data.get("REL_POINTER")),
            _from_json_data(str, data.get("XXX_FEAT_DESC")),
            _from_json_data(str, data.get("XXX_LINKED_FEAT_DESC")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["FEAT_ID"] = _to_json_data(self.feat_id)
        data["FEAT_USAGE_TYPE"] = _to_json_data(self.feat_usage_type)
        data["LINKED_FEAT_ID"] = _to_json_data(self.linked_feat_id)
        data["LINKED_FEAT_TYPE"] = _to_json_data(self.linked_feat_type)
        data["REL_ANCHOR"] = _to_json_data(self.rel_anchor)
        data["REL_LINK"] = _to_json_data(self.rel_link)
        data["REL_POINTER"] = _to_json_data(self.rel_pointer)
        data["XXX_FEAT_DESC"] = _to_json_data(self.xxx_feat_desc)
        data["XXX_LINKED_FEAT_DESC"] = _to_json_data(self.xxx_linked_feat_desc)
        return data

@dataclass
class DisclosedRelationsForWhyKeyDetails:
    domain: 'str'
    entity_roles: 'List[EntityRoles]'
    related_roles: 'List[RelatedRoles]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'DisclosedRelationsForWhyKeyDetails':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(List[EntityRoles], data.get("ENTITY_ROLES")),
            _from_json_data(List[RelatedRoles], data.get("RELATED_ROLES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["ENTITY_ROLES"] = _to_json_data(self.entity_roles)
        data["RELATED_ROLES"] = _to_json_data(self.related_roles)
        return data

@dataclass
class Entity:
    related_entities: 'List[RelatedEntity]'
    resolved_entity: 'ResolvedEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Entity':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES")),
            _from_json_data(ResolvedEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES"] = _to_json_data(self.related_entities)
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class EntityForResolvedEntity:
    related_entities: 'List[RelatedEntity]'
    resolved_entity: 'ResolvedEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityForResolvedEntity':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES")),
            _from_json_data(ResolvedEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES"] = _to_json_data(self.related_entities)
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class EntityForWhySearch:
    related_entities: 'List[RelatedEntity]'
    resolved_entity: 'ResolvedEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityForWhySearch':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES")),
            _from_json_data(ResolvedEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES"] = _to_json_data(self.related_entities)
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class EntityNetworkLink:
    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    is_ambiguous: 'int'
    """
    Indicates if this is an ambiguous relationship.
    """

    is_disclosed: 'int'
    """
    Indicates if this is a disclosed relationship.
    """

    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_key_details: 'MatchKeyDetails'
    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    max_entity_id: 'int'
    min_entity_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityNetworkLink':
        return cls(
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(int, data.get("IS_AMBIGUOUS")),
            _from_json_data(int, data.get("IS_DISCLOSED")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(MatchKeyDetails, data.get("MATCH_KEY_DETAILS")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(int, data.get("MAX_ENTITY_ID")),
            _from_json_data(int, data.get("MIN_ENTITY_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["IS_AMBIGUOUS"] = _to_json_data(self.is_ambiguous)
        data["IS_DISCLOSED"] = _to_json_data(self.is_disclosed)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_KEY_DETAILS"] = _to_json_data(self.match_key_details)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["MAX_ENTITY_ID"] = _to_json_data(self.max_entity_id)
        data["MIN_ENTITY_ID"] = _to_json_data(self.min_entity_id)
        return data

@dataclass
class EntityPath:
    end_entity_id: 'int'
    entities: 'List[int]'
    start_entity_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityPath':
        return cls(
            _from_json_data(int, data.get("END_ENTITY_ID")),
            _from_json_data(List[int], data.get("ENTITIES")),
            _from_json_data(int, data.get("START_ENTITY_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["END_ENTITY_ID"] = _to_json_data(self.end_entity_id)
        data["ENTITIES"] = _to_json_data(self.entities)
        data["START_ENTITY_ID"] = _to_json_data(self.start_entity_id)
        return data

@dataclass
class EntityPathLink:
    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    is_ambiguous: 'int'
    """
    Indicates if this is an ambiguous relationship.
    """

    is_disclosed: 'int'
    """
    Indicates if this is a disclosed relationship.
    """

    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_key_details: 'MatchKeyDetails'
    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    max_entity_id: 'int'
    min_entity_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityPathLink':
        return cls(
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(int, data.get("IS_AMBIGUOUS")),
            _from_json_data(int, data.get("IS_DISCLOSED")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(MatchKeyDetails, data.get("MATCH_KEY_DETAILS")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(int, data.get("MAX_ENTITY_ID")),
            _from_json_data(int, data.get("MIN_ENTITY_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["IS_AMBIGUOUS"] = _to_json_data(self.is_ambiguous)
        data["IS_DISCLOSED"] = _to_json_data(self.is_disclosed)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_KEY_DETAILS"] = _to_json_data(self.match_key_details)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["MAX_ENTITY_ID"] = _to_json_data(self.max_entity_id)
        data["MIN_ENTITY_ID"] = _to_json_data(self.min_entity_id)
        return data

@dataclass
class EntityRoles:
    feat_desc: 'str'
    role: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'EntityRoles':
        return cls(
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(str, data.get("ROLE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["ROLE"] = _to_json_data(self.role)
        return data

@dataclass
class Feature:
    felem_code: 'str'
    """
    Internal use.
    """

    felem_value: 'str'
    """
    Internal use.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'Feature':
        return cls(
            _from_json_data(str, data.get("FELEM_CODE")),
            _from_json_data(str, data.get("FELEM_VALUE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FELEM_CODE"] = _to_json_data(self.felem_code)
        data["FELEM_VALUE"] = _to_json_data(self.felem_value)
        return data

@dataclass
class FeatureDescriptionValue:
    attributes: 'Dict[str, str]'
    candidate_cap_reached: 'str'
    entity_count: 'int'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_desc_values: 'List[FeatureDescriptionValueDetails]'
    lib_feat_id: 'int'
    """
    Internal use.
    """

    scoring_cap_reached: 'str'
    suppressed: 'str'
    used_for_cand: 'str'
    used_for_scoring: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureDescriptionValue':
        return cls(
            _from_json_data(Dict[str, str], data.get("ATTRIBUTES")),
            _from_json_data(str, data.get("CANDIDATE_CAP_REACHED")),
            _from_json_data(int, data.get("ENTITY_COUNT")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(List[FeatureDescriptionValueDetails], data.get("FEAT_DESC_VALUES")),
            _from_json_data(int, data.get("LIB_FEAT_ID")),
            _from_json_data(str, data.get("SCORING_CAP_REACHED")),
            _from_json_data(str, data.get("SUPPRESSED")),
            _from_json_data(str, data.get("USED_FOR_CAND")),
            _from_json_data(str, data.get("USED_FOR_SCORING")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ATTRIBUTES"] = _to_json_data(self.attributes)
        data["CANDIDATE_CAP_REACHED"] = _to_json_data(self.candidate_cap_reached)
        data["ENTITY_COUNT"] = _to_json_data(self.entity_count)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_DESC_VALUES"] = _to_json_data(self.feat_desc_values)
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        data["SCORING_CAP_REACHED"] = _to_json_data(self.scoring_cap_reached)
        data["SUPPRESSED"] = _to_json_data(self.suppressed)
        data["USED_FOR_CAND"] = _to_json_data(self.used_for_cand)
        data["USED_FOR_SCORING"] = _to_json_data(self.used_for_scoring)
        return data

@dataclass
class FeatureDescriptionValueDetails:
    candidate_cap_reached: 'str'
    entity_count: 'int'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    lib_feat_id: 'int'
    scoring_cap_reached: 'str'
    suppressed: 'str'
    used_for_cand: 'str'
    used_for_scoring: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureDescriptionValueDetails':
        return cls(
            _from_json_data(str, data.get("CANDIDATE_CAP_REACHED")),
            _from_json_data(int, data.get("ENTITY_COUNT")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(int, data.get("LIB_FEAT_ID")),
            _from_json_data(str, data.get("SCORING_CAP_REACHED")),
            _from_json_data(str, data.get("SUPPRESSED")),
            _from_json_data(str, data.get("USED_FOR_CAND")),
            _from_json_data(str, data.get("USED_FOR_SCORING")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CANDIDATE_CAP_REACHED"] = _to_json_data(self.candidate_cap_reached)
        data["ENTITY_COUNT"] = _to_json_data(self.entity_count)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        data["SCORING_CAP_REACHED"] = _to_json_data(self.scoring_cap_reached)
        data["SUPPRESSED"] = _to_json_data(self.suppressed)
        data["USED_FOR_CAND"] = _to_json_data(self.used_for_cand)
        data["USED_FOR_SCORING"] = _to_json_data(self.used_for_scoring)
        return data

@dataclass
class FeatureForAttributes:
    attributes: 'SenzingEntitySpecification'
    candidate_cap_reached: 'str'
    entity_count: 'int'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_desc_values: 'List[FeatureDescriptionValue]'
    """
    Describes the attributes that make up the feature.
    """

    lib_feat_id: 'int'
    scoring_cap_reached: 'str'
    usage_type: 'str'
    """
    Label to identify how some features are being used (can also change some
    features behavior).
    """

    used_for_cand: 'str'
    used_for_scoring: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureForAttributes':
        return cls(
            _from_json_data(SenzingEntitySpecification, data.get("ATTRIBUTES")),
            _from_json_data(str, data.get("CANDIDATE_CAP_REACHED")),
            _from_json_data(int, data.get("ENTITY_COUNT")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(List[FeatureDescriptionValue], data.get("FEAT_DESC_VALUES")),
            _from_json_data(int, data.get("LIB_FEAT_ID")),
            _from_json_data(str, data.get("SCORING_CAP_REACHED")),
            _from_json_data(str, data.get("USAGE_TYPE")),
            _from_json_data(str, data.get("USED_FOR_CAND")),
            _from_json_data(str, data.get("USED_FOR_SCORING")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ATTRIBUTES"] = _to_json_data(self.attributes)
        data["CANDIDATE_CAP_REACHED"] = _to_json_data(self.candidate_cap_reached)
        data["ENTITY_COUNT"] = _to_json_data(self.entity_count)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_DESC_VALUES"] = _to_json_data(self.feat_desc_values)
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        data["SCORING_CAP_REACHED"] = _to_json_data(self.scoring_cap_reached)
        data["USAGE_TYPE"] = _to_json_data(self.usage_type)
        data["USED_FOR_CAND"] = _to_json_data(self.used_for_cand)
        data["USED_FOR_SCORING"] = _to_json_data(self.used_for_scoring)
        return data

@dataclass
class FeatureForGetEntity:
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_desc_values: 'List[FeatureDescriptionValue]'
    """
    Describes the attributes that make up the feature.
    """

    lib_feat_id: 'int'
    usage_type: 'str'
    """
    Label to identify how some features are being used (can also change some
    features behavior).
    """

    xxx_attributes: 'List[SenzingEntitySpecification]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureForGetEntity':
        return cls(
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(List[FeatureDescriptionValue], data.get("FEAT_DESC_VALUES")),
            _from_json_data(int, data.get("LIB_FEAT_ID")),
            _from_json_data(str, data.get("USAGE_TYPE")),
            _from_json_data(List[SenzingEntitySpecification], data.get("XXX_ATTRIBUTES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_DESC_VALUES"] = _to_json_data(self.feat_desc_values)
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        data["USAGE_TYPE"] = _to_json_data(self.usage_type)
        data["XXX_ATTRIBUTES"] = _to_json_data(self.xxx_attributes)
        return data

@dataclass
class FeatureID:
    lib_feat_id: 'int'
    usage_type: 'str'
    """
    Label to identify how some features are being used (can also change some
    features behavior).
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureID':
        return cls(
            _from_json_data(int, data.get("LIB_FEAT_ID")),
            _from_json_data(str, data.get("USAGE_TYPE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        data["USAGE_TYPE"] = _to_json_data(self.usage_type)
        return data

@dataclass
class FeatureScoreForAttribute:
    additional_scores: 'AdditionalScores'
    candidate_feat_desc: 'str'
    candidate_feat_id: 'int'
    candidate_feat_usage_type: 'str'
    inbound_feat_desc: 'str'
    inbound_feat_id: 'int'
    inbound_feat_usage_type: 'str'
    score: 'int'
    score_behavior: 'str'
    score_bucket: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureScoreForAttribute':
        return cls(
            _from_json_data(AdditionalScores, data.get("ADDITIONAL_SCORES")),
            _from_json_data(str, data.get("CANDIDATE_FEAT_DESC")),
            _from_json_data(int, data.get("CANDIDATE_FEAT_ID")),
            _from_json_data(str, data.get("CANDIDATE_FEAT_USAGE_TYPE")),
            _from_json_data(str, data.get("INBOUND_FEAT_DESC")),
            _from_json_data(int, data.get("INBOUND_FEAT_ID")),
            _from_json_data(str, data.get("INBOUND_FEAT_USAGE_TYPE")),
            _from_json_data(int, data.get("SCORE")),
            _from_json_data(str, data.get("SCORE_BEHAVIOR")),
            _from_json_data(str, data.get("SCORE_BUCKET")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ADDITIONAL_SCORES"] = _to_json_data(self.additional_scores)
        data["CANDIDATE_FEAT_DESC"] = _to_json_data(self.candidate_feat_desc)
        data["CANDIDATE_FEAT_ID"] = _to_json_data(self.candidate_feat_id)
        data["CANDIDATE_FEAT_USAGE_TYPE"] = _to_json_data(self.candidate_feat_usage_type)
        data["INBOUND_FEAT_DESC"] = _to_json_data(self.inbound_feat_desc)
        data["INBOUND_FEAT_ID"] = _to_json_data(self.inbound_feat_id)
        data["INBOUND_FEAT_USAGE_TYPE"] = _to_json_data(self.inbound_feat_usage_type)
        data["SCORE"] = _to_json_data(self.score)
        data["SCORE_BEHAVIOR"] = _to_json_data(self.score_behavior)
        data["SCORE_BUCKET"] = _to_json_data(self.score_bucket)
        return data

@dataclass
class FeatureScores:
    value: 'Dict[str, List[FeatureScoreForAttribute]]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureScores':
        return cls(_from_json_data(Dict[str, List[FeatureScoreForAttribute]], data))

    def to_json_data(self) -> Any:
        return _to_json_data(self.value)

@dataclass
class FeatureType:
    found: 'int'
    ftype_code: 'str'
    generic: 'int'
    not_found: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FeatureType':
        return cls(
            _from_json_data(int, data.get("FOUND")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(int, data.get("GENERIC")),
            _from_json_data(int, data.get("NOT_FOUND")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FOUND"] = _to_json_data(self.found)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["GENERIC"] = _to_json_data(self.generic)
        data["NOT_FOUND"] = _to_json_data(self.not_found)
        return data

@dataclass
class FinalState:
    need_reevaluation: 'int'
    virtual_entities: 'List[VirtualEntitySynopsis]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'FinalState':
        return cls(
            _from_json_data(int, data.get("NEED_REEVALUATION")),
            _from_json_data(List[VirtualEntitySynopsis], data.get("VIRTUAL_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["NEED_REEVALUATION"] = _to_json_data(self.need_reevaluation)
        data["VIRTUAL_ENTITIES"] = _to_json_data(self.virtual_entities)
        return data

@dataclass
class Fixme:
    fixme_key: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Fixme':
        return cls(
            _from_json_data(str, data.get("FIXME_KEY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FIXME_KEY"] = _to_json_data(self.fixme_key)
        return data

@dataclass
class FocusRecord:
    data_source: 'str'
    """
    A label identifying the provenance of the record. FIXME: An example of
    differences.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'FocusRecord':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("RECORD_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        return data

@dataclass
class G2configSettings:
    metaphone_version: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'G2configSettings':
        return cls(
            _from_json_data(int, data.get("METAPHONE_VERSION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["METAPHONE_VERSION"] = _to_json_data(self.metaphone_version)
        return data

@dataclass
class G2config:
    cfg_attr: 'List[CfgAttr]'
    cfg_cfbom: 'List[CfgCfbom]'
    cfg_cfcall: 'List[CfgCfcall]'
    cfg_cfrtn: 'List[CfgCfrtn]'
    cfg_cfunc: 'List[CfgCfunc]'
    cfg_dfbom: 'List[CfgDfbom]'
    cfg_dfcall: 'List[CfgDfcall]'
    cfg_dfunc: 'List[CfgDfunc]'
    cfg_dsrc: 'List[CfgDsrc]'
    cfg_dsrc_interest: 'List[CfgDsrcInterest]'
    cfg_ebom: 'List[CfgEbom]'
    cfg_efbom: 'List[CfgEfbom]'
    cfg_efcall: 'List[CfgEfcall]'
    cfg_efunc: 'List[CfgEfunc]'
    cfg_erfrag: 'List[CfgErfrag]'
    cfg_errule: 'List[CfgErrule]'
    cfg_fbom: 'List[CfgFbom]'
    cfg_fbovr: 'List[CfgFbovr]'
    cfg_fclass: 'List[CfgFclass]'
    cfg_felem: 'List[CfgFelem]'
    cfg_ftype: 'List[CfgFtype]'
    cfg_generic_threshold: 'List[CfgGenericThreshold]'
    cfg_gplan: 'List[CfgGplan]'
    cfg_rclass: 'List[CfgRclass]'
    cfg_rtype: 'List[CfgRtype]'
    cfg_sfcall: 'List[CfgSfcall]'
    cfg_sfunc: 'List[CfgSfunc]'
    config_base_version: 'ConfigBaseVersion'
    settings: 'G2configSettings'
    sys_oom: 'List[SysOom]'
    xxx_cfg_eclass: 'List[CfgEclass]'
    xxx_cfg_etype: 'List[CfgEtype]'
    xxx_cfg_lens: 'List[CfgLens]'
    xxx_cfg_lensrl: 'List[CfgLensrl]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'G2config':
        return cls(
            _from_json_data(List[CfgAttr], data.get("CFG_ATTR")),
            _from_json_data(List[CfgCfbom], data.get("CFG_CFBOM")),
            _from_json_data(List[CfgCfcall], data.get("CFG_CFCALL")),
            _from_json_data(List[CfgCfrtn], data.get("CFG_CFRTN")),
            _from_json_data(List[CfgCfunc], data.get("CFG_CFUNC")),
            _from_json_data(List[CfgDfbom], data.get("CFG_DFBOM")),
            _from_json_data(List[CfgDfcall], data.get("CFG_DFCALL")),
            _from_json_data(List[CfgDfunc], data.get("CFG_DFUNC")),
            _from_json_data(List[CfgDsrc], data.get("CFG_DSRC")),
            _from_json_data(List[CfgDsrcInterest], data.get("CFG_DSRC_INTEREST")),
            _from_json_data(List[CfgEbom], data.get("CFG_EBOM")),
            _from_json_data(List[CfgEfbom], data.get("CFG_EFBOM")),
            _from_json_data(List[CfgEfcall], data.get("CFG_EFCALL")),
            _from_json_data(List[CfgEfunc], data.get("CFG_EFUNC")),
            _from_json_data(List[CfgErfrag], data.get("CFG_ERFRAG")),
            _from_json_data(List[CfgErrule], data.get("CFG_ERRULE")),
            _from_json_data(List[CfgFbom], data.get("CFG_FBOM")),
            _from_json_data(List[CfgFbovr], data.get("CFG_FBOVR")),
            _from_json_data(List[CfgFclass], data.get("CFG_FCLASS")),
            _from_json_data(List[CfgFelem], data.get("CFG_FELEM")),
            _from_json_data(List[CfgFtype], data.get("CFG_FTYPE")),
            _from_json_data(List[CfgGenericThreshold], data.get("CFG_GENERIC_THRESHOLD")),
            _from_json_data(List[CfgGplan], data.get("CFG_GPLAN")),
            _from_json_data(List[CfgRclass], data.get("CFG_RCLASS")),
            _from_json_data(List[CfgRtype], data.get("CFG_RTYPE")),
            _from_json_data(List[CfgSfcall], data.get("CFG_SFCALL")),
            _from_json_data(List[CfgSfunc], data.get("CFG_SFUNC")),
            _from_json_data(ConfigBaseVersion, data.get("CONFIG_BASE_VERSION")),
            _from_json_data(G2configSettings, data.get("SETTINGS")),
            _from_json_data(List[SysOom], data.get("SYS_OOM")),
            _from_json_data(List[CfgEclass], data.get("XXX_CFG_ECLASS")),
            _from_json_data(List[CfgEtype], data.get("XXX_CFG_ETYPE")),
            _from_json_data(List[CfgLens], data.get("XXX_CFG_LENS")),
            _from_json_data(List[CfgLensrl], data.get("XXX_CFG_LENSRL")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CFG_ATTR"] = _to_json_data(self.cfg_attr)
        data["CFG_CFBOM"] = _to_json_data(self.cfg_cfbom)
        data["CFG_CFCALL"] = _to_json_data(self.cfg_cfcall)
        data["CFG_CFRTN"] = _to_json_data(self.cfg_cfrtn)
        data["CFG_CFUNC"] = _to_json_data(self.cfg_cfunc)
        data["CFG_DFBOM"] = _to_json_data(self.cfg_dfbom)
        data["CFG_DFCALL"] = _to_json_data(self.cfg_dfcall)
        data["CFG_DFUNC"] = _to_json_data(self.cfg_dfunc)
        data["CFG_DSRC"] = _to_json_data(self.cfg_dsrc)
        data["CFG_DSRC_INTEREST"] = _to_json_data(self.cfg_dsrc_interest)
        data["CFG_EBOM"] = _to_json_data(self.cfg_ebom)
        data["CFG_EFBOM"] = _to_json_data(self.cfg_efbom)
        data["CFG_EFCALL"] = _to_json_data(self.cfg_efcall)
        data["CFG_EFUNC"] = _to_json_data(self.cfg_efunc)
        data["CFG_ERFRAG"] = _to_json_data(self.cfg_erfrag)
        data["CFG_ERRULE"] = _to_json_data(self.cfg_errule)
        data["CFG_FBOM"] = _to_json_data(self.cfg_fbom)
        data["CFG_FBOVR"] = _to_json_data(self.cfg_fbovr)
        data["CFG_FCLASS"] = _to_json_data(self.cfg_fclass)
        data["CFG_FELEM"] = _to_json_data(self.cfg_felem)
        data["CFG_FTYPE"] = _to_json_data(self.cfg_ftype)
        data["CFG_GENERIC_THRESHOLD"] = _to_json_data(self.cfg_generic_threshold)
        data["CFG_GPLAN"] = _to_json_data(self.cfg_gplan)
        data["CFG_RCLASS"] = _to_json_data(self.cfg_rclass)
        data["CFG_RTYPE"] = _to_json_data(self.cfg_rtype)
        data["CFG_SFCALL"] = _to_json_data(self.cfg_sfcall)
        data["CFG_SFUNC"] = _to_json_data(self.cfg_sfunc)
        data["CONFIG_BASE_VERSION"] = _to_json_data(self.config_base_version)
        data["SETTINGS"] = _to_json_data(self.settings)
        data["SYS_OOM"] = _to_json_data(self.sys_oom)
        data["XXX_CFG_ECLASS"] = _to_json_data(self.xxx_cfg_eclass)
        data["XXX_CFG_ETYPE"] = _to_json_data(self.xxx_cfg_etype)
        data["XXX_CFG_LENS"] = _to_json_data(self.xxx_cfg_lens)
        data["XXX_CFG_LENSRL"] = _to_json_data(self.xxx_cfg_lensrl)
        return data

@dataclass
class HowResults:
    final_state: 'FinalState'
    resolution_steps: 'List[ResolutionStep]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'HowResults':
        return cls(
            _from_json_data(FinalState, data.get("FINAL_STATE")),
            _from_json_data(List[ResolutionStep], data.get("RESOLUTION_STEPS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FINAL_STATE"] = _to_json_data(self.final_state)
        data["RESOLUTION_STEPS"] = _to_json_data(self.resolution_steps)
        return data

@dataclass
class InterestingEntities:
    entities: 'List[InterestingEntity]'
    notices: 'List[Notice]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'InterestingEntities':
        return cls(
            _from_json_data(List[InterestingEntity], data.get("ENTITIES")),
            _from_json_data(List[Notice], data.get("NOTICES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["NOTICES"] = _to_json_data(self.notices)
        return data

@dataclass
class InterestingEntity:
    degrees: 'int'
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """

    flags: 'List[str]'
    sample_records: 'List[SampleRecord]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'InterestingEntity':
        return cls(
            _from_json_data(int, data.get("DEGREES")),
            _from_json_data(int, data.get("ENTITY_ID")),
            _from_json_data(List[str], data.get("FLAGS")),
            _from_json_data(List[SampleRecord], data.get("SAMPLE_RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DEGREES"] = _to_json_data(self.degrees)
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        data["FLAGS"] = _to_json_data(self.flags)
        data["SAMPLE_RECORDS"] = _to_json_data(self.sample_records)
        return data

@dataclass
class MatchInfo:
    candidate_keys: 'CandidateKeysForMatchInfo'
    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    feature_scores: 'FeatureScores'
    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_key_details: 'MatchKeyDetails'
    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    xxx_disclosed_relations: 'DisclosedRelationsForMatchInfo'
    xxx_match_level: 'int'
    xxx_why_errule_code: 'str'
    xxx_why_key: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'MatchInfo':
        return cls(
            _from_json_data(CandidateKeysForMatchInfo, data.get("CANDIDATE_KEYS")),
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(FeatureScores, data.get("FEATURE_SCORES")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(MatchKeyDetails, data.get("MATCH_KEY_DETAILS")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(DisclosedRelationsForMatchInfo, data.get("XXX_DISCLOSED_RELATIONS")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(str, data.get("XXX_WHY_ERRULE_CODE")),
            _from_json_data(str, data.get("XXX_WHY_KEY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CANDIDATE_KEYS"] = _to_json_data(self.candidate_keys)
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["FEATURE_SCORES"] = _to_json_data(self.feature_scores)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_KEY_DETAILS"] = _to_json_data(self.match_key_details)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["XXX_DISCLOSED_RELATIONS"] = _to_json_data(self.xxx_disclosed_relations)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_WHY_ERRULE_CODE"] = _to_json_data(self.xxx_why_errule_code)
        data["XXX_WHY_KEY"] = _to_json_data(self.xxx_why_key)
        return data

@dataclass
class MatchInfoForAttribute:
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'MatchInfoForAttribute':
        return cls(
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(int, data.get("FEAT_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_ID"] = _to_json_data(self.feat_id)
        return data

@dataclass
class MatchInfoForWhy:
    candidate_keys: 'Dict[str, List[MatchInfoForAttribute]]'
    disclosed_relations: 'DisclosedRelationsForMatchInfoForWhy'
    feature_scores: 'FeatureScores'
    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    why_errule_code: 'str'
    why_key: 'str'
    why_key_details: 'WhyKeyDetails'

    @classmethod
    def from_json_data(cls, data: Any) -> 'MatchInfoForWhy':
        return cls(
            _from_json_data(Dict[str, List[MatchInfoForAttribute]], data.get("CANDIDATE_KEYS")),
            _from_json_data(DisclosedRelationsForMatchInfoForWhy, data.get("DISCLOSED_RELATIONS")),
            _from_json_data(FeatureScores, data.get("FEATURE_SCORES")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(str, data.get("WHY_ERRULE_CODE")),
            _from_json_data(str, data.get("WHY_KEY")),
            _from_json_data(WhyKeyDetails, data.get("WHY_KEY_DETAILS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CANDIDATE_KEYS"] = _to_json_data(self.candidate_keys)
        data["DISCLOSED_RELATIONS"] = _to_json_data(self.disclosed_relations)
        data["FEATURE_SCORES"] = _to_json_data(self.feature_scores)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["WHY_ERRULE_CODE"] = _to_json_data(self.why_errule_code)
        data["WHY_KEY"] = _to_json_data(self.why_key)
        data["WHY_KEY_DETAILS"] = _to_json_data(self.why_key_details)
        return data

@dataclass
class MatchKeyDetails:
    confirmations: 'List[Confirmation]'
    denials: 'List[Confirmation]'
    disclosed_relations: 'List[DisclosedRelationsForMatchInfo]'
    rel_links: 'List[RelLink]'
    xxx_errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'MatchKeyDetails':
        return cls(
            _from_json_data(List[Confirmation], data.get("CONFIRMATIONS")),
            _from_json_data(List[Confirmation], data.get("DENIALS")),
            _from_json_data(List[DisclosedRelationsForMatchInfo], data.get("DISCLOSED_RELATIONS")),
            _from_json_data(List[RelLink], data.get("REL_LINKS")),
            _from_json_data(str, data.get("XXX_ERRULE_CODE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONFIRMATIONS"] = _to_json_data(self.confirmations)
        data["DENIALS"] = _to_json_data(self.denials)
        data["DISCLOSED_RELATIONS"] = _to_json_data(self.disclosed_relations)
        data["REL_LINKS"] = _to_json_data(self.rel_links)
        data["XXX_ERRULE_CODE"] = _to_json_data(self.xxx_errule_code)
        return data

@dataclass
class MemberRecord:
    internal_id: 'int'
    """
    Internal identifier for the record.
    """

    records: 'List[Record]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'MemberRecord':
        return cls(
            _from_json_data(int, data.get("INTERNAL_ID")),
            _from_json_data(List[Record], data.get("RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["INTERNAL_ID"] = _to_json_data(self.internal_id)
        data["RECORDS"] = _to_json_data(self.records)
        return data

@dataclass
class Notice:
    code: 'str'
    description: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Notice':
        return cls(
            _from_json_data(str, data.get("CODE")),
            _from_json_data(str, data.get("DESCRIPTION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CODE"] = _to_json_data(self.code)
        data["DESCRIPTION"] = _to_json_data(self.description)
        return data

@dataclass
class Object:
    value: 'object'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Object':
        return cls(_from_json_data(object, data))

    def to_json_data(self) -> Any:
        return _to_json_data(self.value)

@dataclass
class Record:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    features: 'Dict[str, List[FeatureForAttributes]]'
    feature_ids: 'List[FeatureID]'
    first_seen_dt: 'datetime'
    internal_id: 'int'
    """
    Internal identifier for the record.
    """

    json_data: 'Dict[str, Object]'
    last_seen_dt: 'datetime'
    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    unmapped_data: 'Dict[str, Object]'
    xxx_address_data: 'List[str]'
    xxx_attribute_data: 'List[str]'
    xxx_entity_data: 'List[str]'
    xxx_entity_desc: 'str'
    xxx_entity_key: 'str'
    xxx_entity_type: 'str'
    xxx_identifier_data: 'List[str]'
    xxx_match_level: 'int'
    xxx_name_data: 'List[str]'
    xxx_other_data: 'List[str]'
    xxx_phone_data: 'List[str]'
    xxx_relationship_data: 'List[str]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Record':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(Dict[str, List[FeatureForAttributes]], data.get("FEATURES")),
            _from_json_data(List[FeatureID], data.get("FEATURE_IDS")),
            _from_json_data(datetime, data.get("FIRST_SEEN_DT")),
            _from_json_data(int, data.get("INTERNAL_ID")),
            _from_json_data(Dict[str, Object], data.get("JSON_DATA")),
            _from_json_data(datetime, data.get("LAST_SEEN_DT")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(Dict[str, Object], data.get("UNMAPPED_DATA")),
            _from_json_data(List[str], data.get("XXX_ADDRESS_DATA")),
            _from_json_data(List[str], data.get("XXX_ATTRIBUTE_DATA")),
            _from_json_data(List[str], data.get("XXX_ENTITY_DATA")),
            _from_json_data(str, data.get("XXX_ENTITY_DESC")),
            _from_json_data(str, data.get("XXX_ENTITY_KEY")),
            _from_json_data(str, data.get("XXX_ENTITY_TYPE")),
            _from_json_data(List[str], data.get("XXX_IDENTIFIER_DATA")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(List[str], data.get("XXX_NAME_DATA")),
            _from_json_data(List[str], data.get("XXX_OTHER_DATA")),
            _from_json_data(List[str], data.get("XXX_PHONE_DATA")),
            _from_json_data(List[str], data.get("XXX_RELATIONSHIP_DATA")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["FEATURES"] = _to_json_data(self.features)
        data["FEATURE_IDS"] = _to_json_data(self.feature_ids)
        data["FIRST_SEEN_DT"] = _to_json_data(self.first_seen_dt)
        data["INTERNAL_ID"] = _to_json_data(self.internal_id)
        data["JSON_DATA"] = _to_json_data(self.json_data)
        data["LAST_SEEN_DT"] = _to_json_data(self.last_seen_dt)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["UNMAPPED_DATA"] = _to_json_data(self.unmapped_data)
        data["XXX_ADDRESS_DATA"] = _to_json_data(self.xxx_address_data)
        data["XXX_ATTRIBUTE_DATA"] = _to_json_data(self.xxx_attribute_data)
        data["XXX_ENTITY_DATA"] = _to_json_data(self.xxx_entity_data)
        data["XXX_ENTITY_DESC"] = _to_json_data(self.xxx_entity_desc)
        data["XXX_ENTITY_KEY"] = _to_json_data(self.xxx_entity_key)
        data["XXX_ENTITY_TYPE"] = _to_json_data(self.xxx_entity_type)
        data["XXX_IDENTIFIER_DATA"] = _to_json_data(self.xxx_identifier_data)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_NAME_DATA"] = _to_json_data(self.xxx_name_data)
        data["XXX_OTHER_DATA"] = _to_json_data(self.xxx_other_data)
        data["XXX_PHONE_DATA"] = _to_json_data(self.xxx_phone_data)
        data["XXX_RELATIONSHIP_DATA"] = _to_json_data(self.xxx_relationship_data)
        return data

@dataclass
class RecordForGetEntity:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    features: 'Dict[str, List[FeatureForAttributes]]'
    feature_ids: 'List[FeatureID]'
    first_seen_dt: 'datetime'
    internal_id: 'int'
    """
    Internal identifier for the record.
    """

    json_data: 'Dict[str, Object]'
    last_seen_dt: 'datetime'
    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    unmapped_data: 'Dict[str, Object]'
    xxx_address_data: 'List[str]'
    xxx_attribute_data: 'List[str]'
    xxx_entity_data: 'List[str]'
    xxx_entity_desc: 'str'
    xxx_entity_key: 'str'
    xxx_entity_type: 'str'
    xxx_identifier_data: 'List[str]'
    xxx_match_level: 'int'
    xxx_name_data: 'List[str]'
    xxx_other_data: 'List[str]'
    xxx_phone_data: 'List[str]'
    xxx_relationship_data: 'List[str]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RecordForGetEntity':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(Dict[str, List[FeatureForAttributes]], data.get("FEATURES")),
            _from_json_data(List[FeatureID], data.get("FEATURE_IDS")),
            _from_json_data(datetime, data.get("FIRST_SEEN_DT")),
            _from_json_data(int, data.get("INTERNAL_ID")),
            _from_json_data(Dict[str, Object], data.get("JSON_DATA")),
            _from_json_data(datetime, data.get("LAST_SEEN_DT")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(Dict[str, Object], data.get("UNMAPPED_DATA")),
            _from_json_data(List[str], data.get("XXX_ADDRESS_DATA")),
            _from_json_data(List[str], data.get("XXX_ATTRIBUTE_DATA")),
            _from_json_data(List[str], data.get("XXX_ENTITY_DATA")),
            _from_json_data(str, data.get("XXX_ENTITY_DESC")),
            _from_json_data(str, data.get("XXX_ENTITY_KEY")),
            _from_json_data(str, data.get("XXX_ENTITY_TYPE")),
            _from_json_data(List[str], data.get("XXX_IDENTIFIER_DATA")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(List[str], data.get("XXX_NAME_DATA")),
            _from_json_data(List[str], data.get("XXX_OTHER_DATA")),
            _from_json_data(List[str], data.get("XXX_PHONE_DATA")),
            _from_json_data(List[str], data.get("XXX_RELATIONSHIP_DATA")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["FEATURES"] = _to_json_data(self.features)
        data["FEATURE_IDS"] = _to_json_data(self.feature_ids)
        data["FIRST_SEEN_DT"] = _to_json_data(self.first_seen_dt)
        data["INTERNAL_ID"] = _to_json_data(self.internal_id)
        data["JSON_DATA"] = _to_json_data(self.json_data)
        data["LAST_SEEN_DT"] = _to_json_data(self.last_seen_dt)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["UNMAPPED_DATA"] = _to_json_data(self.unmapped_data)
        data["XXX_ADDRESS_DATA"] = _to_json_data(self.xxx_address_data)
        data["XXX_ATTRIBUTE_DATA"] = _to_json_data(self.xxx_attribute_data)
        data["XXX_ENTITY_DATA"] = _to_json_data(self.xxx_entity_data)
        data["XXX_ENTITY_DESC"] = _to_json_data(self.xxx_entity_desc)
        data["XXX_ENTITY_KEY"] = _to_json_data(self.xxx_entity_key)
        data["XXX_ENTITY_TYPE"] = _to_json_data(self.xxx_entity_type)
        data["XXX_IDENTIFIER_DATA"] = _to_json_data(self.xxx_identifier_data)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_NAME_DATA"] = _to_json_data(self.xxx_name_data)
        data["XXX_OTHER_DATA"] = _to_json_data(self.xxx_other_data)
        data["XXX_PHONE_DATA"] = _to_json_data(self.xxx_phone_data)
        data["XXX_RELATIONSHIP_DATA"] = _to_json_data(self.xxx_relationship_data)
        return data

@dataclass
class RecordKey:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'RecordKey':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("RECORD_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        return data

@dataclass
class RecordKeys:
    records: 'List[RecordKey]'
    """
    A list of (data source code, record id) pairs.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'RecordKeys':
        return cls(
            _from_json_data(List[RecordKey], data.get("RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RECORDS"] = _to_json_data(self.records)
        return data

@dataclass
class RecordSummary:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    record_count: 'int'
    """
    The number of records for the entity with the same data source code.
    """

    xxx_first_seen_dt: 'datetime'
    xxx_last_seen_dt: 'datetime'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RecordSummary':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(int, data.get("RECORD_COUNT")),
            _from_json_data(datetime, data.get("XXX_FIRST_SEEN_DT")),
            _from_json_data(datetime, data.get("XXX_LAST_SEEN_DT")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_COUNT"] = _to_json_data(self.record_count)
        data["XXX_FIRST_SEEN_DT"] = _to_json_data(self.xxx_first_seen_dt)
        data["XXX_LAST_SEEN_DT"] = _to_json_data(self.xxx_last_seen_dt)
        return data

@dataclass
class RelAnchor:
    domain: 'str'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_id: 'int'
    linked_feat_desc: 'str'
    linked_feat_id: 'int'
    linked_feat_type: 'str'
    linked_feat_usage_type: 'str'
    xxx_rel_pointer: 'List[RelPointer]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RelAnchor':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(int, data.get("FEAT_ID")),
            _from_json_data(str, data.get("LINKED_FEAT_DESC")),
            _from_json_data(int, data.get("LINKED_FEAT_ID")),
            _from_json_data(str, data.get("LINKED_FEAT_TYPE")),
            _from_json_data(str, data.get("LINKED_FEAT_USAGE_TYPE")),
            _from_json_data(List[RelPointer], data.get("XXX_REL_POINTER")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_ID"] = _to_json_data(self.feat_id)
        data["LINKED_FEAT_DESC"] = _to_json_data(self.linked_feat_desc)
        data["LINKED_FEAT_ID"] = _to_json_data(self.linked_feat_id)
        data["LINKED_FEAT_TYPE"] = _to_json_data(self.linked_feat_type)
        data["LINKED_FEAT_USAGE_TYPE"] = _to_json_data(self.linked_feat_usage_type)
        data["XXX_REL_POINTER"] = _to_json_data(self.xxx_rel_pointer)
        return data

@dataclass
class RelLink:
    domain: 'str'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_id: 'int'
    feat_usage_type: 'str'
    ftype_code: 'str'
    linked_feat_desc: 'str'
    linked_feat_id: 'int'
    linked_feat_type: 'str'
    linked_feat_usage_type: 'str'
    rel_type: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RelLink':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(int, data.get("FEAT_ID")),
            _from_json_data(str, data.get("FEAT_USAGE_TYPE")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(str, data.get("LINKED_FEAT_DESC")),
            _from_json_data(int, data.get("LINKED_FEAT_ID")),
            _from_json_data(str, data.get("LINKED_FEAT_TYPE")),
            _from_json_data(str, data.get("LINKED_FEAT_USAGE_TYPE")),
            _from_json_data(str, data.get("REL_TYPE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_ID"] = _to_json_data(self.feat_id)
        data["FEAT_USAGE_TYPE"] = _to_json_data(self.feat_usage_type)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["LINKED_FEAT_DESC"] = _to_json_data(self.linked_feat_desc)
        data["LINKED_FEAT_ID"] = _to_json_data(self.linked_feat_id)
        data["LINKED_FEAT_TYPE"] = _to_json_data(self.linked_feat_type)
        data["LINKED_FEAT_USAGE_TYPE"] = _to_json_data(self.linked_feat_usage_type)
        data["REL_TYPE"] = _to_json_data(self.rel_type)
        return data

@dataclass
class RelPointer:
    domain: 'str'
    feat_desc: 'str'
    """
    Describes the attributes that make up the feature.
    """

    feat_id: 'int'
    feat_usage_type: 'str'
    linked_feat_desc: 'str'
    linked_feat_id: 'int'
    linked_feat_type: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RelPointer':
        return cls(
            _from_json_data(str, data.get("DOMAIN")),
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(int, data.get("FEAT_ID")),
            _from_json_data(str, data.get("FEAT_USAGE_TYPE")),
            _from_json_data(str, data.get("LINKED_FEAT_DESC")),
            _from_json_data(int, data.get("LINKED_FEAT_ID")),
            _from_json_data(str, data.get("LINKED_FEAT_TYPE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DOMAIN"] = _to_json_data(self.domain)
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["FEAT_ID"] = _to_json_data(self.feat_id)
        data["FEAT_USAGE_TYPE"] = _to_json_data(self.feat_usage_type)
        data["LINKED_FEAT_DESC"] = _to_json_data(self.linked_feat_desc)
        data["LINKED_FEAT_ID"] = _to_json_data(self.linked_feat_id)
        data["LINKED_FEAT_TYPE"] = _to_json_data(self.linked_feat_type)
        return data

@dataclass
class RelatedEntity:
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """

    entity_name: 'str'
    """
    A name this entity goes by. An entity could have multiple names.
    """

    errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    is_ambiguous: 'int'
    """
    Indicates if this is an ambiguous relationship.
    """

    is_disclosed: 'int'
    """
    Indicates if this is a disclosed relationship.
    """

    match_key: 'str'
    """
    Representation of matched source record features.
    """

    match_key_details: 'MatchKeyDetails'
    match_level: 'int'
    match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    records: 'List[Record]'
    record_summary: 'List[RecordSummary]'
    """
    Overview of the source systems the records came from comprising this related
    entity.
    """

    record_types: 'List[str]'
    xxx_last_seen_dt: 'datetime'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RelatedEntity':
        return cls(
            _from_json_data(int, data.get("ENTITY_ID")),
            _from_json_data(str, data.get("ENTITY_NAME")),
            _from_json_data(str, data.get("ERRULE_CODE")),
            _from_json_data(int, data.get("IS_AMBIGUOUS")),
            _from_json_data(int, data.get("IS_DISCLOSED")),
            _from_json_data(str, data.get("MATCH_KEY")),
            _from_json_data(MatchKeyDetails, data.get("MATCH_KEY_DETAILS")),
            _from_json_data(int, data.get("MATCH_LEVEL")),
            _from_json_data(str, data.get("MATCH_LEVEL_CODE")),
            _from_json_data(List[Record], data.get("RECORDS")),
            _from_json_data(List[RecordSummary], data.get("RECORD_SUMMARY")),
            _from_json_data(List[str], data.get("RECORD_TYPES")),
            _from_json_data(datetime, data.get("XXX_LAST_SEEN_DT")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        data["ENTITY_NAME"] = _to_json_data(self.entity_name)
        data["ERRULE_CODE"] = _to_json_data(self.errule_code)
        data["IS_AMBIGUOUS"] = _to_json_data(self.is_ambiguous)
        data["IS_DISCLOSED"] = _to_json_data(self.is_disclosed)
        data["MATCH_KEY"] = _to_json_data(self.match_key)
        data["MATCH_KEY_DETAILS"] = _to_json_data(self.match_key_details)
        data["MATCH_LEVEL"] = _to_json_data(self.match_level)
        data["MATCH_LEVEL_CODE"] = _to_json_data(self.match_level_code)
        data["RECORDS"] = _to_json_data(self.records)
        data["RECORD_SUMMARY"] = _to_json_data(self.record_summary)
        data["RECORD_TYPES"] = _to_json_data(self.record_types)
        data["XXX_LAST_SEEN_DT"] = _to_json_data(self.xxx_last_seen_dt)
        return data

@dataclass
class RelatedRoles:
    feat_desc: 'str'
    role: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'RelatedRoles':
        return cls(
            _from_json_data(str, data.get("FEAT_DESC")),
            _from_json_data(str, data.get("ROLE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEAT_DESC"] = _to_json_data(self.feat_desc)
        data["ROLE"] = _to_json_data(self.role)
        return data

@dataclass
class Repository:
    id: 'str'
    """
    Label for database repository.
    """

    location: 'str'
    """
    Database connection information.
    """

    type: 'str'
    """
    Type of database.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'Repository':
        return cls(
            _from_json_data(str, data.get("id")),
            _from_json_data(str, data.get("location")),
            _from_json_data(str, data.get("type")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["id"] = _to_json_data(self.id)
        data["location"] = _to_json_data(self.location)
        data["type"] = _to_json_data(self.type)
        return data

@dataclass
class ResolutionStep:
    inbound_virtual_entity_id: 'str'
    match_info: 'MatchInfo'
    result_virtual_entity_id: 'str'
    step: 'int'
    virtual_entity: 'VirtualEntitySynopsis'
    virtual_entity0: 'VirtualEntitySynopsis'

    @classmethod
    def from_json_data(cls, data: Any) -> 'ResolutionStep':
        return cls(
            _from_json_data(str, data.get("INBOUND_VIRTUAL_ENTITY_ID")),
            _from_json_data(MatchInfo, data.get("MATCH_INFO")),
            _from_json_data(str, data.get("RESULT_VIRTUAL_ENTITY_ID")),
            _from_json_data(int, data.get("STEP")),
            _from_json_data(VirtualEntitySynopsis, data.get("VIRTUAL_ENTITY_1")),
            _from_json_data(VirtualEntitySynopsis, data.get("VIRTUAL_ENTITY_2")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["INBOUND_VIRTUAL_ENTITY_ID"] = _to_json_data(self.inbound_virtual_entity_id)
        data["MATCH_INFO"] = _to_json_data(self.match_info)
        data["RESULT_VIRTUAL_ENTITY_ID"] = _to_json_data(self.result_virtual_entity_id)
        data["STEP"] = _to_json_data(self.step)
        data["VIRTUAL_ENTITY_1"] = _to_json_data(self.virtual_entity)
        data["VIRTUAL_ENTITY_2"] = _to_json_data(self.virtual_entity0)
        return data

@dataclass
class ResolvedEntity:
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """

    entity_name: 'str'
    """
    A name this entity goes by. An entity could have multiple names.
    """

    features: 'Dict[str, List[FeatureForAttributes]]'
    records: 'List[Record]'
    record_summary: 'List[RecordSummary]'
    """
    Overview of the source systems the records came from comprising this related
    entity.
    """

    record_types: 'List[str]'
    xxx_errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    xxx_feature_ids: 'List[FeatureID]'
    xxx_is_ambiguous: 'int'
    """
    Indicates if this is an ambiguous relationship.
    """

    xxx_is_disclosed: 'int'
    """
    Indicates if this is a disclosed relationship.
    """

    xxx_last_seen_dt: 'datetime'
    xxx_match_key: 'str'
    """
    Representation of matched source record features.
    """

    xxx_match_level: 'int'
    xxx_match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'ResolvedEntity':
        return cls(
            _from_json_data(int, data.get("ENTITY_ID")),
            _from_json_data(str, data.get("ENTITY_NAME")),
            _from_json_data(Dict[str, List[FeatureForAttributes]], data.get("FEATURES")),
            _from_json_data(List[Record], data.get("RECORDS")),
            _from_json_data(List[RecordSummary], data.get("RECORD_SUMMARY")),
            _from_json_data(List[str], data.get("RECORD_TYPES")),
            _from_json_data(str, data.get("XXX_ERRULE_CODE")),
            _from_json_data(List[FeatureID], data.get("XXX_FEATURE_IDS")),
            _from_json_data(int, data.get("XXX_IS_AMBIGUOUS")),
            _from_json_data(int, data.get("XXX_IS_DISCLOSED")),
            _from_json_data(datetime, data.get("XXX_LAST_SEEN_DT")),
            _from_json_data(str, data.get("XXX_MATCH_KEY")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(str, data.get("XXX_MATCH_LEVEL_CODE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        data["ENTITY_NAME"] = _to_json_data(self.entity_name)
        data["FEATURES"] = _to_json_data(self.features)
        data["RECORDS"] = _to_json_data(self.records)
        data["RECORD_SUMMARY"] = _to_json_data(self.record_summary)
        data["RECORD_TYPES"] = _to_json_data(self.record_types)
        data["XXX_ERRULE_CODE"] = _to_json_data(self.xxx_errule_code)
        data["XXX_FEATURE_IDS"] = _to_json_data(self.xxx_feature_ids)
        data["XXX_IS_AMBIGUOUS"] = _to_json_data(self.xxx_is_ambiguous)
        data["XXX_IS_DISCLOSED"] = _to_json_data(self.xxx_is_disclosed)
        data["XXX_LAST_SEEN_DT"] = _to_json_data(self.xxx_last_seen_dt)
        data["XXX_MATCH_KEY"] = _to_json_data(self.xxx_match_key)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_MATCH_LEVEL_CODE"] = _to_json_data(self.xxx_match_level_code)
        return data

@dataclass
class ResolvedEntityAndMatchInfo:
    entity: 'EntityForResolvedEntity'
    features_mjd: 'EntityForResolvedEntity'
    match_info: 'MatchInfo'

    @classmethod
    def from_json_data(cls, data: Any) -> 'ResolvedEntityAndMatchInfo':
        return cls(
            _from_json_data(EntityForResolvedEntity, data.get("ENTITY")),
            _from_json_data(EntityForResolvedEntity, data.get("FEATURES_MJD")),
            _from_json_data(MatchInfo, data.get("MATCH_INFO")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY"] = _to_json_data(self.entity)
        data["FEATURES_MJD"] = _to_json_data(self.features_mjd)
        data["MATCH_INFO"] = _to_json_data(self.match_info)
        return data

@dataclass
class ResolvedEntityForGetEntity:
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """

    entity_name: 'str'
    """
    A name this entity goes by. An entity could have multiple names.
    """

    features: 'Dict[str, List[FeatureForGetEntity]]'
    records: 'List[RecordForGetEntity]'
    record_summary: 'List[RecordSummary]'
    """
    Overview of the source systems the records came from comprising this related
    entity.
    """

    record_types: 'List[str]'
    xxx_errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    xxx_feature_ids: 'List[FeatureID]'
    xxx_is_ambiguous: 'int'
    """
    Indicates if this is an ambiguous relationship.
    """

    xxx_is_disclosed: 'int'
    """
    Indicates if this is a disclosed relationship.
    """

    xxx_last_seen_dt: 'datetime'
    xxx_match_key: 'str'
    """
    Representation of matched source record features.
    """

    xxx_match_level: 'int'
    xxx_match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'ResolvedEntityForGetEntity':
        return cls(
            _from_json_data(int, data.get("ENTITY_ID")),
            _from_json_data(str, data.get("ENTITY_NAME")),
            _from_json_data(Dict[str, List[FeatureForGetEntity]], data.get("FEATURES")),
            _from_json_data(List[RecordForGetEntity], data.get("RECORDS")),
            _from_json_data(List[RecordSummary], data.get("RECORD_SUMMARY")),
            _from_json_data(List[str], data.get("RECORD_TYPES")),
            _from_json_data(str, data.get("XXX_ERRULE_CODE")),
            _from_json_data(List[FeatureID], data.get("XXX_FEATURE_IDS")),
            _from_json_data(int, data.get("XXX_IS_AMBIGUOUS")),
            _from_json_data(int, data.get("XXX_IS_DISCLOSED")),
            _from_json_data(datetime, data.get("XXX_LAST_SEEN_DT")),
            _from_json_data(str, data.get("XXX_MATCH_KEY")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(str, data.get("XXX_MATCH_LEVEL_CODE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        data["ENTITY_NAME"] = _to_json_data(self.entity_name)
        data["FEATURES"] = _to_json_data(self.features)
        data["RECORDS"] = _to_json_data(self.records)
        data["RECORD_SUMMARY"] = _to_json_data(self.record_summary)
        data["RECORD_TYPES"] = _to_json_data(self.record_types)
        data["XXX_ERRULE_CODE"] = _to_json_data(self.xxx_errule_code)
        data["XXX_FEATURE_IDS"] = _to_json_data(self.xxx_feature_ids)
        data["XXX_IS_AMBIGUOUS"] = _to_json_data(self.xxx_is_ambiguous)
        data["XXX_IS_DISCLOSED"] = _to_json_data(self.xxx_is_disclosed)
        data["XXX_LAST_SEEN_DT"] = _to_json_data(self.xxx_last_seen_dt)
        data["XXX_MATCH_KEY"] = _to_json_data(self.xxx_match_key)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_MATCH_LEVEL_CODE"] = _to_json_data(self.xxx_match_level_code)
        return data

@dataclass
class SysOom:
    ftype_id: 'int'
    next_thresh: 'int'
    oom_level: 'str'
    oom_type: 'str'
    thresh1_cnt: 'int'
    thresh1_oom: 'int'
    xxx_felem_id: 'int'
    xxx_lens_id: 'int'
    xxx_lib_feat_id: 'int'
    xxx_lib_felem_id: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SysOom':
        return cls(
            _from_json_data(int, data.get("FTYPE_ID")),
            _from_json_data(int, data.get("NEXT_THRESH")),
            _from_json_data(str, data.get("OOM_LEVEL")),
            _from_json_data(str, data.get("OOM_TYPE")),
            _from_json_data(int, data.get("THRESH1_CNT")),
            _from_json_data(int, data.get("THRESH1_OOM")),
            _from_json_data(int, data.get("XXX_FELEM_ID")),
            _from_json_data(int, data.get("XXX_LENS_ID")),
            _from_json_data(int, data.get("XXX_LIB_FEAT_ID")),
            _from_json_data(int, data.get("XXX_LIB_FELEM_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FTYPE_ID"] = _to_json_data(self.ftype_id)
        data["NEXT_THRESH"] = _to_json_data(self.next_thresh)
        data["OOM_LEVEL"] = _to_json_data(self.oom_level)
        data["OOM_TYPE"] = _to_json_data(self.oom_type)
        data["THRESH1_CNT"] = _to_json_data(self.thresh1_cnt)
        data["THRESH1_OOM"] = _to_json_data(self.thresh1_oom)
        data["XXX_FELEM_ID"] = _to_json_data(self.xxx_felem_id)
        data["XXX_LENS_ID"] = _to_json_data(self.xxx_lens_id)
        data["XXX_LIB_FEAT_ID"] = _to_json_data(self.xxx_lib_feat_id)
        data["XXX_LIB_FELEM_ID"] = _to_json_data(self.xxx_lib_felem_id)
        return data

@dataclass
class SampleRecord:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    flags: 'List[str]'
    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SampleRecord':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(List[str], data.get("FLAGS")),
            _from_json_data(str, data.get("RECORD_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["FLAGS"] = _to_json_data(self.flags)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        return data

@dataclass
class SchemaVersion:
    engine_schema_version: 'str'
    maximum_required_schema_version: 'str'
    minimum_required_schema_version: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SchemaVersion':
        return cls(
            _from_json_data(str, data.get("ENGINE_SCHEMA_VERSION")),
            _from_json_data(str, data.get("MAXIMUM_REQUIRED_SCHEMA_VERSION")),
            _from_json_data(str, data.get("MINIMUM_REQUIRED_SCHEMA_VERSION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENGINE_SCHEMA_VERSION"] = _to_json_data(self.engine_schema_version)
        data["MAXIMUM_REQUIRED_SCHEMA_VERSION"] = _to_json_data(self.maximum_required_schema_version)
        data["MINIMUM_REQUIRED_SCHEMA_VERSION"] = _to_json_data(self.minimum_required_schema_version)
        return data

@dataclass
class SearchEntity:
    features: 'Dict[str, List[FeatureDescriptionValue]]'
    summary: 'SearchEntitySummary'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SearchEntity':
        return cls(
            _from_json_data(Dict[str, List[FeatureDescriptionValue]], data.get("FEATURES")),
            _from_json_data(SearchEntitySummary, data.get("SUMMARY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEATURES"] = _to_json_data(self.features)
        data["SUMMARY"] = _to_json_data(self.summary)
        return data

@dataclass
class SearchEntitySummary:
    features_added: 'int'
    features_ignored: 'int'
    features_searched: 'int'
    features_submitted: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SearchEntitySummary':
        return cls(
            _from_json_data(int, data.get("FEATURES_ADDED")),
            _from_json_data(int, data.get("FEATURES_IGNORED")),
            _from_json_data(int, data.get("FEATURES_SEARCHED")),
            _from_json_data(int, data.get("FEATURES_SUBMITTED")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEATURES_ADDED"] = _to_json_data(self.features_added)
        data["FEATURES_IGNORED"] = _to_json_data(self.features_ignored)
        data["FEATURES_SEARCHED"] = _to_json_data(self.features_searched)
        data["FEATURES_SUBMITTED"] = _to_json_data(self.features_submitted)
        return data

@dataclass
class SearchRequest:
    features: 'Dict[str, List[FeatureDescriptionValue]]'
    json_data: 'str'
    search_profile: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SearchRequest':
        return cls(
            _from_json_data(Dict[str, List[FeatureDescriptionValue]], data.get("FEATURES")),
            _from_json_data(str, data.get("JSON_DATA")),
            _from_json_data(str, data.get("SEARCH_PROFILE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEATURES"] = _to_json_data(self.features)
        data["JSON_DATA"] = _to_json_data(self.json_data)
        data["SEARCH_PROFILE"] = _to_json_data(self.search_profile)
        return data

@dataclass
class SearchStatistic:
    candidate_keys: 'CandidateKeysForSearchStatistic'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SearchStatistic':
        return cls(
            _from_json_data(CandidateKeysForSearchStatistic, data.get("CANDIDATE_KEYS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CANDIDATE_KEYS"] = _to_json_data(self.candidate_keys)
        return data

@dataclass
class SenzingEntitySpecification:
    account_domain: 'str'
    """
    Domain/system for the account number. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    account_number: 'str'
    """
    Account number (e.g., bank, card). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_city: 'str'
    """
    City/locality. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    addr_country: 'str'
    """
    Country code. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    addr_full: 'str'
    """
    Single-field address when parsed components are unavailable.
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    addr_line1: 'str'
    """
    First address line (street, number). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_line2: 'str'
    """
    Second address line (apt/suite). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_line3: 'str'
    """
    Third address line (optional). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_line4: 'str'
    """
    Fourth address line (optional). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_line5: 'str'
    """
    Fifth address line (optional). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_line6: 'str'
    """
    Sixth address line (optional). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_postal_code: 'str'
    """
    Postal/ZIP code. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    addr_state: 'str'
    """
    State/province/region code. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    addr_type: 'str'
    """
    Optional; include when provided by the source. Common values: HOME, MAILING
    (persons); BUSINESS (organizations). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    citizenship: 'str'
    """
    Country of citizenship (code or label) as provided by the
    source. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    date_of_birth: 'str'
    """
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    date_of_death: 'str'
    """
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    drivers_license_number: 'str'
    """
    Driver's license number. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    drivers_license_state: 'str'
    """
    Issuing state/province/country. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    duns_number: 'str'
    """
    Dun and Bradstreet company identifier. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    email_address: 'str'
    """
    Email address. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    employer: 'str'
    """
    This is the name of the organization the person is employed
    by. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    employer_name: 'str'
    facebook: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    gender: 'str'
    """
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    group_assn_id_number: 'str'
    """
    The identifier the entity is associated with. An attribute in the Senzing
    Entity Specification. See https://www.senzing.com/docs/entity_specification
    """

    group_assn_id_type: 'str'
    """
    The type of group identifier an entity is associated with.
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    group_association_org_name: 'str'
    """
    Name of the associated organization; use the official or standardized
    name. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    group_association_type: 'str'
    """
    Specific group/role within the organization; use precise categories (e.g.,
    OWNER_EXEC, BOARD_MEMBER) to improve resolution. An attribute in the Senzing
    Entity Specification. See https://www.senzing.com/docs/entity_specification
    """

    instagram: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    lei_number: 'str'
    """
    Legal Entity Identifier. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    linkedin: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    name_first: 'str'
    """
    Person given name. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_full: 'str'
    """
    Single-field name when type (person vs org) is unknown or only a full
    name is provided. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_last: 'str'
    """
    Person surname. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_middle: 'str'
    """
    Person middle name/initial. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    name_org: 'str'
    """
    Organization name. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_prefix: 'str'
    """
    Person title. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_suffix: 'str'
    """
    Person suffix. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    name_type: 'str'
    """
    Optional include when the source provides it. Common values: PRIMARY,
    AKA (persons), DBA (organizations). An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    nationality: 'str'
    """
    Country of nationality (code or label) as provided by the
    source. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    national_id_country: 'str'
    """
    Issuing country. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    national_id_number: 'str'
    """
    National identifier value. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    national_id_type: 'str'
    """
    Use the type label from the source; standardize across
    sources. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    native_name_full: 'str'
    npi_number: 'str'
    """
    US healthcare provider identifier. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    other_id_country: 'str'
    """
    Optional as country often not known or issued by an organization.
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    other_id_number: 'str'
    """
    Identification number. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    other_id_type: 'str'
    """
    Standardized source type. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    passport_country: 'str'
    """
    Issuing country. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    passport_number: 'str'
    """
    Passport number. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    phone_number: 'str'
    """
    Telephone number. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    phone_type: 'str'
    """
    Optional; include when provided by the source. Common values: MOBILE, HOME,
    WORK, FAX. MOBILE carries extra weight. An attribute in the Senzing Entity
    Specification. See https://www.senzing.com/docs/entity_specification
    """

    place_of_birth: 'str'
    """
    Place of birth; may be a city/region or a country code/label as provided
    by the source. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    primary_name_first: 'str'
    primary_name_full: 'str'
    primary_name_last: 'str'
    primary_name_middle: 'str'
    primary_name_org: 'str'
    record_type: 'str'
    """
    Include when known to prevent cross-type resolution; omit if unknown.
    Use standardized kinds (PERSON, ORGANIZATION). Often used to determine
    icon/shape in graphs. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    registration_country: 'str'
    """
    Country of registration (code or label) as provided by the
    source. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    registration_date: 'str'
    """
    Organization registration/incorporation date. An attribute in the Senzing
    Entity Specification. See https://www.senzing.com/docs/entity_specification
    """

    relationship_key: 'str'
    relationship_type: 'str'
    rel_anchor_domain: 'str'
    """
    This code helps keep the REL_ANCHOR_KEY unique. This is a code (without
    dashes) for the data source or source field that is contributing the
    relationship. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    rel_anchor_key: 'str'
    """
    This key should be a unique value for the record within the
    REL_ANCHOR_DOMAIN. You can just use the current record's RECORD_ID
    here. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    rel_pointer_domain: 'str'
    """
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    rel_pointer_key: 'str'
    """
    An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    rel_pointer_role: 'str'
    """
    This is the role the pointer record has to the anchor record. Such
    as SPOUSE_OF, SON_OF, FATHER_OF, EMPLOYED_BY, PRINCIPAL_OF, OWNER_OF,
    BRANCH_OF, DIRECT_PARENT, ULTIMATE_PARENT. Standardize these role codes for
    display and filtering. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    secondary_name_org: 'str'
    signal: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    skype: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    ssn_number: 'str'
    """
    US Social Security Number; partial accepted. An attribute in the Senzing
    Entity Specification. See https://www.senzing.com/docs/entity_specification
    """

    tango: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    tax_id_country: 'str'
    """
    Issuing country. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    tax_id_number: 'str'
    """
    Tax identification number. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    tax_id_type: 'str'
    """
    Use the type label from the source; standardize across
    sources. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    telegram: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    trusted_id_number: 'str'
    """
    The identifier value shared by records that must resolve
    together. An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    trusted_id_type: 'str'
    """
    Short code for the identifier domain/system (e.g., STEWARD,
    MASTER_ID). An attribute in the Senzing Entity Specification. See
    https://www.senzing.com/docs/entity_specification
    """

    twitter: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    viber: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    website_address: 'str'
    """
    Website or domain; typically for organizations. An attribute in the Senzing
    Entity Specification. See https://www.senzing.com/docs/entity_specification
    """

    wechat: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    whatsapp: 'str'
    """
    Social medial user name. An attribute in the Senzing Entity Specification.
    See https://www.senzing.com/docs/entity_specification
    """

    xxx_addr_from_date: 'str'
    xxx_addr_thru_date: 'str'
    xxx_phone_from_date: 'str'
    xxx_phone_thru_date: 'str'
    zoomroom: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SenzingEntitySpecification':
        return cls(
            _from_json_data(str, data.get("ACCOUNT_DOMAIN")),
            _from_json_data(str, data.get("ACCOUNT_NUMBER")),
            _from_json_data(str, data.get("ADDR_CITY")),
            _from_json_data(str, data.get("ADDR_COUNTRY")),
            _from_json_data(str, data.get("ADDR_FULL")),
            _from_json_data(str, data.get("ADDR_LINE1")),
            _from_json_data(str, data.get("ADDR_LINE2")),
            _from_json_data(str, data.get("ADDR_LINE3")),
            _from_json_data(str, data.get("ADDR_LINE4")),
            _from_json_data(str, data.get("ADDR_LINE5")),
            _from_json_data(str, data.get("ADDR_LINE6")),
            _from_json_data(str, data.get("ADDR_POSTAL_CODE")),
            _from_json_data(str, data.get("ADDR_STATE")),
            _from_json_data(str, data.get("ADDR_TYPE")),
            _from_json_data(str, data.get("CITIZENSHIP")),
            _from_json_data(str, data.get("DATE_OF_BIRTH")),
            _from_json_data(str, data.get("DATE_OF_DEATH")),
            _from_json_data(str, data.get("DRIVERS_LICENSE_NUMBER")),
            _from_json_data(str, data.get("DRIVERS_LICENSE_STATE")),
            _from_json_data(str, data.get("DUNS_NUMBER")),
            _from_json_data(str, data.get("EMAIL_ADDRESS")),
            _from_json_data(str, data.get("EMPLOYER")),
            _from_json_data(str, data.get("EMPLOYER_NAME")),
            _from_json_data(str, data.get("FACEBOOK")),
            _from_json_data(str, data.get("GENDER")),
            _from_json_data(str, data.get("GROUP_ASSN_ID_NUMBER")),
            _from_json_data(str, data.get("GROUP_ASSN_ID_TYPE")),
            _from_json_data(str, data.get("GROUP_ASSOCIATION_ORG_NAME")),
            _from_json_data(str, data.get("GROUP_ASSOCIATION_TYPE")),
            _from_json_data(str, data.get("INSTAGRAM")),
            _from_json_data(str, data.get("LEI_NUMBER")),
            _from_json_data(str, data.get("LINKEDIN")),
            _from_json_data(str, data.get("NAME_FIRST")),
            _from_json_data(str, data.get("NAME_FULL")),
            _from_json_data(str, data.get("NAME_LAST")),
            _from_json_data(str, data.get("NAME_MIDDLE")),
            _from_json_data(str, data.get("NAME_ORG")),
            _from_json_data(str, data.get("NAME_PREFIX")),
            _from_json_data(str, data.get("NAME_SUFFIX")),
            _from_json_data(str, data.get("NAME_TYPE")),
            _from_json_data(str, data.get("NATIONALITY")),
            _from_json_data(str, data.get("NATIONAL_ID_COUNTRY")),
            _from_json_data(str, data.get("NATIONAL_ID_NUMBER")),
            _from_json_data(str, data.get("NATIONAL_ID_TYPE")),
            _from_json_data(str, data.get("NATIVE_NAME_FULL")),
            _from_json_data(str, data.get("NPI_NUMBER")),
            _from_json_data(str, data.get("OTHER_ID_COUNTRY")),
            _from_json_data(str, data.get("OTHER_ID_NUMBER")),
            _from_json_data(str, data.get("OTHER_ID_TYPE")),
            _from_json_data(str, data.get("PASSPORT_COUNTRY")),
            _from_json_data(str, data.get("PASSPORT_NUMBER")),
            _from_json_data(str, data.get("PHONE_NUMBER")),
            _from_json_data(str, data.get("PHONE_TYPE")),
            _from_json_data(str, data.get("PLACE_OF_BIRTH")),
            _from_json_data(str, data.get("PRIMARY_NAME_FIRST")),
            _from_json_data(str, data.get("PRIMARY_NAME_FULL")),
            _from_json_data(str, data.get("PRIMARY_NAME_LAST")),
            _from_json_data(str, data.get("PRIMARY_NAME_MIDDLE")),
            _from_json_data(str, data.get("PRIMARY_NAME_ORG")),
            _from_json_data(str, data.get("RECORD_TYPE")),
            _from_json_data(str, data.get("REGISTRATION_COUNTRY")),
            _from_json_data(str, data.get("REGISTRATION_DATE")),
            _from_json_data(str, data.get("RELATIONSHIP_KEY")),
            _from_json_data(str, data.get("RELATIONSHIP_TYPE")),
            _from_json_data(str, data.get("REL_ANCHOR_DOMAIN")),
            _from_json_data(str, data.get("REL_ANCHOR_KEY")),
            _from_json_data(str, data.get("REL_POINTER_DOMAIN")),
            _from_json_data(str, data.get("REL_POINTER_KEY")),
            _from_json_data(str, data.get("REL_POINTER_ROLE")),
            _from_json_data(str, data.get("SECONDARY_NAME_ORG")),
            _from_json_data(str, data.get("SIGNAL")),
            _from_json_data(str, data.get("SKYPE")),
            _from_json_data(str, data.get("SSN_NUMBER")),
            _from_json_data(str, data.get("TANGO")),
            _from_json_data(str, data.get("TAX_ID_COUNTRY")),
            _from_json_data(str, data.get("TAX_ID_NUMBER")),
            _from_json_data(str, data.get("TAX_ID_TYPE")),
            _from_json_data(str, data.get("TELEGRAM")),
            _from_json_data(str, data.get("TRUSTED_ID_NUMBER")),
            _from_json_data(str, data.get("TRUSTED_ID_TYPE")),
            _from_json_data(str, data.get("TWITTER")),
            _from_json_data(str, data.get("VIBER")),
            _from_json_data(str, data.get("WEBSITE_ADDRESS")),
            _from_json_data(str, data.get("WECHAT")),
            _from_json_data(str, data.get("WHATSAPP")),
            _from_json_data(str, data.get("XXX_ADDR_FROM_DATE")),
            _from_json_data(str, data.get("XXX_ADDR_THRU_DATE")),
            _from_json_data(str, data.get("XXX_PHONE_FROM_DATE")),
            _from_json_data(str, data.get("XXX_PHONE_THRU_DATE")),
            _from_json_data(str, data.get("ZOOMROOM")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ACCOUNT_DOMAIN"] = _to_json_data(self.account_domain)
        data["ACCOUNT_NUMBER"] = _to_json_data(self.account_number)
        data["ADDR_CITY"] = _to_json_data(self.addr_city)
        data["ADDR_COUNTRY"] = _to_json_data(self.addr_country)
        data["ADDR_FULL"] = _to_json_data(self.addr_full)
        data["ADDR_LINE1"] = _to_json_data(self.addr_line1)
        data["ADDR_LINE2"] = _to_json_data(self.addr_line2)
        data["ADDR_LINE3"] = _to_json_data(self.addr_line3)
        data["ADDR_LINE4"] = _to_json_data(self.addr_line4)
        data["ADDR_LINE5"] = _to_json_data(self.addr_line5)
        data["ADDR_LINE6"] = _to_json_data(self.addr_line6)
        data["ADDR_POSTAL_CODE"] = _to_json_data(self.addr_postal_code)
        data["ADDR_STATE"] = _to_json_data(self.addr_state)
        data["ADDR_TYPE"] = _to_json_data(self.addr_type)
        data["CITIZENSHIP"] = _to_json_data(self.citizenship)
        data["DATE_OF_BIRTH"] = _to_json_data(self.date_of_birth)
        data["DATE_OF_DEATH"] = _to_json_data(self.date_of_death)
        data["DRIVERS_LICENSE_NUMBER"] = _to_json_data(self.drivers_license_number)
        data["DRIVERS_LICENSE_STATE"] = _to_json_data(self.drivers_license_state)
        data["DUNS_NUMBER"] = _to_json_data(self.duns_number)
        data["EMAIL_ADDRESS"] = _to_json_data(self.email_address)
        data["EMPLOYER"] = _to_json_data(self.employer)
        data["EMPLOYER_NAME"] = _to_json_data(self.employer_name)
        data["FACEBOOK"] = _to_json_data(self.facebook)
        data["GENDER"] = _to_json_data(self.gender)
        data["GROUP_ASSN_ID_NUMBER"] = _to_json_data(self.group_assn_id_number)
        data["GROUP_ASSN_ID_TYPE"] = _to_json_data(self.group_assn_id_type)
        data["GROUP_ASSOCIATION_ORG_NAME"] = _to_json_data(self.group_association_org_name)
        data["GROUP_ASSOCIATION_TYPE"] = _to_json_data(self.group_association_type)
        data["INSTAGRAM"] = _to_json_data(self.instagram)
        data["LEI_NUMBER"] = _to_json_data(self.lei_number)
        data["LINKEDIN"] = _to_json_data(self.linkedin)
        data["NAME_FIRST"] = _to_json_data(self.name_first)
        data["NAME_FULL"] = _to_json_data(self.name_full)
        data["NAME_LAST"] = _to_json_data(self.name_last)
        data["NAME_MIDDLE"] = _to_json_data(self.name_middle)
        data["NAME_ORG"] = _to_json_data(self.name_org)
        data["NAME_PREFIX"] = _to_json_data(self.name_prefix)
        data["NAME_SUFFIX"] = _to_json_data(self.name_suffix)
        data["NAME_TYPE"] = _to_json_data(self.name_type)
        data["NATIONALITY"] = _to_json_data(self.nationality)
        data["NATIONAL_ID_COUNTRY"] = _to_json_data(self.national_id_country)
        data["NATIONAL_ID_NUMBER"] = _to_json_data(self.national_id_number)
        data["NATIONAL_ID_TYPE"] = _to_json_data(self.national_id_type)
        data["NATIVE_NAME_FULL"] = _to_json_data(self.native_name_full)
        data["NPI_NUMBER"] = _to_json_data(self.npi_number)
        data["OTHER_ID_COUNTRY"] = _to_json_data(self.other_id_country)
        data["OTHER_ID_NUMBER"] = _to_json_data(self.other_id_number)
        data["OTHER_ID_TYPE"] = _to_json_data(self.other_id_type)
        data["PASSPORT_COUNTRY"] = _to_json_data(self.passport_country)
        data["PASSPORT_NUMBER"] = _to_json_data(self.passport_number)
        data["PHONE_NUMBER"] = _to_json_data(self.phone_number)
        data["PHONE_TYPE"] = _to_json_data(self.phone_type)
        data["PLACE_OF_BIRTH"] = _to_json_data(self.place_of_birth)
        data["PRIMARY_NAME_FIRST"] = _to_json_data(self.primary_name_first)
        data["PRIMARY_NAME_FULL"] = _to_json_data(self.primary_name_full)
        data["PRIMARY_NAME_LAST"] = _to_json_data(self.primary_name_last)
        data["PRIMARY_NAME_MIDDLE"] = _to_json_data(self.primary_name_middle)
        data["PRIMARY_NAME_ORG"] = _to_json_data(self.primary_name_org)
        data["RECORD_TYPE"] = _to_json_data(self.record_type)
        data["REGISTRATION_COUNTRY"] = _to_json_data(self.registration_country)
        data["REGISTRATION_DATE"] = _to_json_data(self.registration_date)
        data["RELATIONSHIP_KEY"] = _to_json_data(self.relationship_key)
        data["RELATIONSHIP_TYPE"] = _to_json_data(self.relationship_type)
        data["REL_ANCHOR_DOMAIN"] = _to_json_data(self.rel_anchor_domain)
        data["REL_ANCHOR_KEY"] = _to_json_data(self.rel_anchor_key)
        data["REL_POINTER_DOMAIN"] = _to_json_data(self.rel_pointer_domain)
        data["REL_POINTER_KEY"] = _to_json_data(self.rel_pointer_key)
        data["REL_POINTER_ROLE"] = _to_json_data(self.rel_pointer_role)
        data["SECONDARY_NAME_ORG"] = _to_json_data(self.secondary_name_org)
        data["SIGNAL"] = _to_json_data(self.signal)
        data["SKYPE"] = _to_json_data(self.skype)
        data["SSN_NUMBER"] = _to_json_data(self.ssn_number)
        data["TANGO"] = _to_json_data(self.tango)
        data["TAX_ID_COUNTRY"] = _to_json_data(self.tax_id_country)
        data["TAX_ID_NUMBER"] = _to_json_data(self.tax_id_number)
        data["TAX_ID_TYPE"] = _to_json_data(self.tax_id_type)
        data["TELEGRAM"] = _to_json_data(self.telegram)
        data["TRUSTED_ID_NUMBER"] = _to_json_data(self.trusted_id_number)
        data["TRUSTED_ID_TYPE"] = _to_json_data(self.trusted_id_type)
        data["TWITTER"] = _to_json_data(self.twitter)
        data["VIBER"] = _to_json_data(self.viber)
        data["WEBSITE_ADDRESS"] = _to_json_data(self.website_address)
        data["WECHAT"] = _to_json_data(self.wechat)
        data["WHATSAPP"] = _to_json_data(self.whatsapp)
        data["XXX_ADDR_FROM_DATE"] = _to_json_data(self.xxx_addr_from_date)
        data["XXX_ADDR_THRU_DATE"] = _to_json_data(self.xxx_addr_thru_date)
        data["XXX_PHONE_FROM_DATE"] = _to_json_data(self.xxx_phone_from_date)
        data["XXX_PHONE_THRU_DATE"] = _to_json_data(self.xxx_phone_thru_date)
        data["ZOOMROOM"] = _to_json_data(self.zoomroom)
        return data

@dataclass
class SzConfigExportResponse:
    g2_config: 'G2config'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzConfigExportResponse':
        return cls(
            _from_json_data(G2config, data.get("G2_CONFIG")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["G2_CONFIG"] = _to_json_data(self.g2_config)
        return data

@dataclass
class SzConfigGetDataSourceRegistryResponse:
    data_sources: 'List[DataSource]'
    """
    The list of registered data sources.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzConfigGetDataSourceRegistryResponse':
        return cls(
            _from_json_data(List[DataSource], data.get("DATA_SOURCES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCES"] = _to_json_data(self.data_sources)
        return data

@dataclass
class SzConfigManagerGetConfigRegistryResponse:
    configs: 'List[Config]'
    """
    The list of registered configurations.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzConfigManagerGetConfigRegistryResponse':
        return cls(
            _from_json_data(List[Config], data.get("CONFIGS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONFIGS"] = _to_json_data(self.configs)
        return data

@dataclass
class SzConfigRegisterDataSourceResponse:
    dsrc_id: 'int'
    """
    The unique internal integer identifier of the datasource.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzConfigRegisterDataSourceResponse':
        return cls(
            _from_json_data(int, data.get("DSRC_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DSRC_ID"] = _to_json_data(self.dsrc_id)
        return data

@dataclass
class SzDiagnosticCheckRepositoryPerformanceResponse:
    insert_time: 'int'
    """
    The duration of the test in milliseconds.
    """

    num_records_inserted: 'int'
    """
    The total number of records inserted within the insertTime.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzDiagnosticCheckRepositoryPerformanceResponse':
        return cls(
            _from_json_data(int, data.get("insertTime")),
            _from_json_data(int, data.get("numRecordsInserted")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["insertTime"] = _to_json_data(self.insert_time)
        data["numRecordsInserted"] = _to_json_data(self.num_records_inserted)
        return data

@dataclass
class SzDiagnosticGetFeatureResponse:
    elements: 'List[Feature]'
    """
    Internal use.
    """

    ftype_code: 'str'
    """
    Internal use.
    """

    lib_feat_id: 'int'
    """
    Internal use.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzDiagnosticGetFeatureResponse':
        return cls(
            _from_json_data(List[Feature], data.get("ELEMENTS")),
            _from_json_data(str, data.get("FTYPE_CODE")),
            _from_json_data(int, data.get("LIB_FEAT_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ELEMENTS"] = _to_json_data(self.elements)
        data["FTYPE_CODE"] = _to_json_data(self.ftype_code)
        data["LIB_FEAT_ID"] = _to_json_data(self.lib_feat_id)
        return data

@dataclass
class SzDiagnosticGetRepositoryInfoResponse:
    data_stores: 'List[Repository]'
    """
    A list of database node connection metadata.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzDiagnosticGetRepositoryInfoResponse':
        return cls(
            _from_json_data(List[Repository], data.get("dataStores")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["dataStores"] = _to_json_data(self.data_stores)
        return data

@dataclass
class SzEngineAddRecordResponse:
    affected_entities: 'List[AffectedEntity]'
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    interesting_entities: 'InterestingEntities'
    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineAddRecordResponse':
        return cls(
            _from_json_data(List[AffectedEntity], data.get("AFFECTED_ENTITIES")),
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(InterestingEntities, data.get("INTERESTING_ENTITIES")),
            _from_json_data(str, data.get("RECORD_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["AFFECTED_ENTITIES"] = _to_json_data(self.affected_entities)
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["INTERESTING_ENTITIES"] = _to_json_data(self.interesting_entities)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        return data

@dataclass
class SzEngineDeleteRecordResponse:
    affected_entities: 'List[AffectedEntity]'
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    xxx_interesting_entities: 'InterestingEntities'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineDeleteRecordResponse':
        return cls(
            _from_json_data(List[AffectedEntity], data.get("AFFECTED_ENTITIES")),
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(InterestingEntities, data.get("XXX_INTERESTING_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["AFFECTED_ENTITIES"] = _to_json_data(self.affected_entities)
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["XXX_INTERESTING_ENTITIES"] = _to_json_data(self.xxx_interesting_entities)
        return data

@dataclass
class SzEngineExportCsvEntityReportCsvColumnList:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineExportCsvEntityReportCsvColumnList':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFetchNextResponse:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFetchNextResponse':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFindInterestingEntitiesByEntityIDResponse:
    interesting_entities: 'InterestingEntities'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindInterestingEntitiesByEntityIDResponse':
        return cls(
            _from_json_data(InterestingEntities, data.get("INTERESTING_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["INTERESTING_ENTITIES"] = _to_json_data(self.interesting_entities)
        return data

@dataclass
class SzEngineFindInterestingEntitiesByRecordIDResponse:
    interesting_entities: 'InterestingEntities'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindInterestingEntitiesByRecordIDResponse':
        return cls(
            _from_json_data(InterestingEntities, data.get("INTERESTING_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["INTERESTING_ENTITIES"] = _to_json_data(self.interesting_entities)
        return data

@dataclass
class SzEngineFindNetworkByEntityIDEntityIds:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindNetworkByEntityIDEntityIds':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFindNetworkByEntityIDResponse:
    entities: 'List[Entity]'
    entity_network_links: 'List[EntityNetworkLink]'
    entity_paths: 'List[EntityPath]'
    entity_path_links: 'List[EntityPathLink]'
    max_entity_limit_reached: 'str'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindNetworkByEntityIDResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[EntityNetworkLink], data.get("ENTITY_NETWORK_LINKS")),
            _from_json_data(List[EntityPath], data.get("ENTITY_PATHS")),
            _from_json_data(List[EntityPathLink], data.get("ENTITY_PATH_LINKS")),
            _from_json_data(str, data.get("MAX_ENTITY_LIMIT_REACHED")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["ENTITY_NETWORK_LINKS"] = _to_json_data(self.entity_network_links)
        data["ENTITY_PATHS"] = _to_json_data(self.entity_paths)
        data["ENTITY_PATH_LINKS"] = _to_json_data(self.entity_path_links)
        data["MAX_ENTITY_LIMIT_REACHED"] = _to_json_data(self.max_entity_limit_reached)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineFindNetworkByRecordIDRecordKeys:
    records: 'List[RecordKey]'
    """
    A list of (data source code, record id) pairs.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindNetworkByRecordIDRecordKeys':
        return cls(
            _from_json_data(List[RecordKey], data.get("RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RECORDS"] = _to_json_data(self.records)
        return data

@dataclass
class SzEngineFindNetworkByRecordIDResponse:
    entities: 'List[Entity]'
    entity_network_links: 'List[EntityNetworkLink]'
    entity_paths: 'List[EntityPath]'
    entity_path_links: 'List[EntityPathLink]'
    max_entity_limit_reached: 'str'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindNetworkByRecordIDResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[EntityNetworkLink], data.get("ENTITY_NETWORK_LINKS")),
            _from_json_data(List[EntityPath], data.get("ENTITY_PATHS")),
            _from_json_data(List[EntityPathLink], data.get("ENTITY_PATH_LINKS")),
            _from_json_data(str, data.get("MAX_ENTITY_LIMIT_REACHED")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["ENTITY_NETWORK_LINKS"] = _to_json_data(self.entity_network_links)
        data["ENTITY_PATHS"] = _to_json_data(self.entity_paths)
        data["ENTITY_PATH_LINKS"] = _to_json_data(self.entity_path_links)
        data["MAX_ENTITY_LIMIT_REACHED"] = _to_json_data(self.max_entity_limit_reached)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineFindPathByEntityIDAvoidEntityIds:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByEntityIDAvoidEntityIds':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFindPathByEntityIDRequiredDataSources:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByEntityIDRequiredDataSources':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFindPathByEntityIDResponse:
    entities: 'List[Entity]'
    entity_paths: 'List[EntityPath]'
    entity_path_links: 'List[EntityPathLink]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByEntityIDResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[EntityPath], data.get("ENTITY_PATHS")),
            _from_json_data(List[EntityPathLink], data.get("ENTITY_PATH_LINKS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["ENTITY_PATHS"] = _to_json_data(self.entity_paths)
        data["ENTITY_PATH_LINKS"] = _to_json_data(self.entity_path_links)
        return data

@dataclass
class SzEngineFindPathByRecordIDAvoidRecordKeys:
    records: 'List[RecordKey]'
    """
    A list of (data source code, record id) pairs.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByRecordIDAvoidRecordKeys':
        return cls(
            _from_json_data(List[RecordKey], data.get("RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RECORDS"] = _to_json_data(self.records)
        return data

@dataclass
class SzEngineFindPathByRecordIDRequiredDataSources:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByRecordIDRequiredDataSources':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineFindPathByRecordIDResponse:
    entities: 'List[Entity]'
    entity_paths: 'List[EntityPath]'
    entity_path_links: 'List[EntityPathLink]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineFindPathByRecordIDResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[EntityPath], data.get("ENTITY_PATHS")),
            _from_json_data(List[EntityPathLink], data.get("ENTITY_PATH_LINKS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["ENTITY_PATHS"] = _to_json_data(self.entity_paths)
        data["ENTITY_PATH_LINKS"] = _to_json_data(self.entity_path_links)
        return data

@dataclass
class SzEngineGetEntityByEntityIDResponse:
    related_entities: 'List[RelatedEntity]'
    resolved_entity: 'ResolvedEntityForGetEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetEntityByEntityIDResponse':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES")),
            _from_json_data(ResolvedEntityForGetEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES"] = _to_json_data(self.related_entities)
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class SzEngineGetEntityByRecordIDResponse:
    related_entities: 'List[RelatedEntity]'
    resolved_entity: 'ResolvedEntityForGetEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetEntityByRecordIDResponse':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES")),
            _from_json_data(ResolvedEntityForGetEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES"] = _to_json_data(self.related_entities)
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class SzEngineGetRecordPreviewResponse:
    features: 'Dict[str, List[FeatureForAttributes]]'
    feature_ids: 'List[FeatureID]'
    json_data: 'Dict[str, Object]'
    unmapped_data: 'Dict[str, Object]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetRecordPreviewResponse':
        return cls(
            _from_json_data(Dict[str, List[FeatureForAttributes]], data.get("FEATURES")),
            _from_json_data(List[FeatureID], data.get("FEATURE_IDS")),
            _from_json_data(Dict[str, Object], data.get("JSON_DATA")),
            _from_json_data(Dict[str, Object], data.get("UNMAPPED_DATA")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["FEATURES"] = _to_json_data(self.features)
        data["FEATURE_IDS"] = _to_json_data(self.feature_ids)
        data["JSON_DATA"] = _to_json_data(self.json_data)
        data["UNMAPPED_DATA"] = _to_json_data(self.unmapped_data)
        return data

@dataclass
class SzEngineGetRecordResponse:
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    features: 'Dict[str, List[FeatureForAttributes]]'
    feature_ids: 'List[FeatureID]'
    first_seen_dt: 'datetime'
    json_data: 'Dict[str, Object]'
    last_seen_dt: 'datetime'
    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    unmapped_data: 'Dict[str, Object]'
    xxx_address_data: 'List[str]'
    xxx_attribute_data: 'List[str]'
    xxx_entity_data: 'List[str]'
    xxx_entity_desc: 'str'
    xxx_entity_key: 'str'
    xxx_entity_type: 'str'
    xxx_errule_code: 'str'
    """
    Identifier of the entity resolution rule that was triggered.
    """

    xxx_identifier_data: 'List[str]'
    xxx_internal_id: 'int'
    """
    Internal identifier for the record.
    """

    xxx_match_key: 'str'
    """
    Representation of matched source record features.
    """

    xxx_match_level: 'int'
    xxx_match_level_code: 'str'
    """
    The type of match that occurred for the record.
    """

    xxx_name_data: 'List[str]'
    xxx_other_data: 'List[str]'
    xxx_phone_data: 'List[str]'
    xxx_relationship_data: 'List[str]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetRecordResponse':
        return cls(
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(Dict[str, List[FeatureForAttributes]], data.get("FEATURES")),
            _from_json_data(List[FeatureID], data.get("FEATURE_IDS")),
            _from_json_data(datetime, data.get("FIRST_SEEN_DT")),
            _from_json_data(Dict[str, Object], data.get("JSON_DATA")),
            _from_json_data(datetime, data.get("LAST_SEEN_DT")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(Dict[str, Object], data.get("UNMAPPED_DATA")),
            _from_json_data(List[str], data.get("XXX_ADDRESS_DATA")),
            _from_json_data(List[str], data.get("XXX_ATTRIBUTE_DATA")),
            _from_json_data(List[str], data.get("XXX_ENTITY_DATA")),
            _from_json_data(str, data.get("XXX_ENTITY_DESC")),
            _from_json_data(str, data.get("XXX_ENTITY_KEY")),
            _from_json_data(str, data.get("XXX_ENTITY_TYPE")),
            _from_json_data(str, data.get("XXX_ERRULE_CODE")),
            _from_json_data(List[str], data.get("XXX_IDENTIFIER_DATA")),
            _from_json_data(int, data.get("XXX_INTERNAL_ID")),
            _from_json_data(str, data.get("XXX_MATCH_KEY")),
            _from_json_data(int, data.get("XXX_MATCH_LEVEL")),
            _from_json_data(str, data.get("XXX_MATCH_LEVEL_CODE")),
            _from_json_data(List[str], data.get("XXX_NAME_DATA")),
            _from_json_data(List[str], data.get("XXX_OTHER_DATA")),
            _from_json_data(List[str], data.get("XXX_PHONE_DATA")),
            _from_json_data(List[str], data.get("XXX_RELATIONSHIP_DATA")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["FEATURES"] = _to_json_data(self.features)
        data["FEATURE_IDS"] = _to_json_data(self.feature_ids)
        data["FIRST_SEEN_DT"] = _to_json_data(self.first_seen_dt)
        data["JSON_DATA"] = _to_json_data(self.json_data)
        data["LAST_SEEN_DT"] = _to_json_data(self.last_seen_dt)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["UNMAPPED_DATA"] = _to_json_data(self.unmapped_data)
        data["XXX_ADDRESS_DATA"] = _to_json_data(self.xxx_address_data)
        data["XXX_ATTRIBUTE_DATA"] = _to_json_data(self.xxx_attribute_data)
        data["XXX_ENTITY_DATA"] = _to_json_data(self.xxx_entity_data)
        data["XXX_ENTITY_DESC"] = _to_json_data(self.xxx_entity_desc)
        data["XXX_ENTITY_KEY"] = _to_json_data(self.xxx_entity_key)
        data["XXX_ENTITY_TYPE"] = _to_json_data(self.xxx_entity_type)
        data["XXX_ERRULE_CODE"] = _to_json_data(self.xxx_errule_code)
        data["XXX_IDENTIFIER_DATA"] = _to_json_data(self.xxx_identifier_data)
        data["XXX_INTERNAL_ID"] = _to_json_data(self.xxx_internal_id)
        data["XXX_MATCH_KEY"] = _to_json_data(self.xxx_match_key)
        data["XXX_MATCH_LEVEL"] = _to_json_data(self.xxx_match_level)
        data["XXX_MATCH_LEVEL_CODE"] = _to_json_data(self.xxx_match_level_code)
        data["XXX_NAME_DATA"] = _to_json_data(self.xxx_name_data)
        data["XXX_OTHER_DATA"] = _to_json_data(self.xxx_other_data)
        data["XXX_PHONE_DATA"] = _to_json_data(self.xxx_phone_data)
        data["XXX_RELATIONSHIP_DATA"] = _to_json_data(self.xxx_relationship_data)
        return data

@dataclass
class SzEngineGetRedoRecordResponse:
    umf_proc: 'UmfProc'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetRedoRecordResponse':
        return cls(
            _from_json_data(UmfProc, data.get("UMF_PROC")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["UMF_PROC"] = _to_json_data(self.umf_proc)
        return data

@dataclass
class SzEngineGetStatsResponse:
    workload: 'Workload'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetStatsResponse':
        return cls(
            _from_json_data(Workload, data.get("workload")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["workload"] = _to_json_data(self.workload)
        return data

@dataclass
class SzEngineGetVirtualEntityByRecordIDRecordKeys:
    records: 'List[RecordKey]'
    """
    A list of (data source code, record id) pairs.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetVirtualEntityByRecordIDRecordKeys':
        return cls(
            _from_json_data(List[RecordKey], data.get("RECORDS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RECORDS"] = _to_json_data(self.records)
        return data

@dataclass
class SzEngineGetVirtualEntityByRecordIDResponse:
    resolved_entity: 'ResolvedEntity'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineGetVirtualEntityByRecordIDResponse':
        return cls(
            _from_json_data(ResolvedEntity, data.get("RESOLVED_ENTITY")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RESOLVED_ENTITY"] = _to_json_data(self.resolved_entity)
        return data

@dataclass
class SzEngineHowEntityByEntityIDResponse:
    how_results: 'HowResults'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineHowEntityByEntityIDResponse':
        return cls(
            _from_json_data(HowResults, data.get("HOW_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["HOW_RESULTS"] = _to_json_data(self.how_results)
        return data

@dataclass
class SzEngineProcessRedoRecordResponse:
    affected_entities: 'List[AffectedEntity]'
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    umf_proc: 'UmfProc'
    xxx_interesting_entities: 'InterestingEntities'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineProcessRedoRecordResponse':
        return cls(
            _from_json_data(List[AffectedEntity], data.get("AFFECTED_ENTITIES")),
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(UmfProc, data.get("UMF_PROC")),
            _from_json_data(InterestingEntities, data.get("XXX_INTERESTING_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["AFFECTED_ENTITIES"] = _to_json_data(self.affected_entities)
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["UMF_PROC"] = _to_json_data(self.umf_proc)
        data["XXX_INTERESTING_ENTITIES"] = _to_json_data(self.xxx_interesting_entities)
        return data

@dataclass
class SzEngineReevaluateEntityResponse:
    affected_entities: 'List[AffectedEntity]'
    interesting_entities: 'InterestingEntities'
    xxx_data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    xxx_record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """


    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineReevaluateEntityResponse':
        return cls(
            _from_json_data(List[AffectedEntity], data.get("AFFECTED_ENTITIES")),
            _from_json_data(InterestingEntities, data.get("INTERESTING_ENTITIES")),
            _from_json_data(str, data.get("XXX_DATA_SOURCE")),
            _from_json_data(str, data.get("XXX_RECORD_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["AFFECTED_ENTITIES"] = _to_json_data(self.affected_entities)
        data["INTERESTING_ENTITIES"] = _to_json_data(self.interesting_entities)
        data["XXX_DATA_SOURCE"] = _to_json_data(self.xxx_data_source)
        data["XXX_RECORD_ID"] = _to_json_data(self.xxx_record_id)
        return data

@dataclass
class SzEngineReevaluateRecordResponse:
    affected_entities: 'List[AffectedEntity]'
    data_source: 'str'
    """
    A label identifying the provenance of the record.
    """

    record_id: 'str'
    """
    The unique identifier within the set of records in the DATA_SOURCE.
    """

    xxx_interesting_entities: 'InterestingEntities'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineReevaluateRecordResponse':
        return cls(
            _from_json_data(List[AffectedEntity], data.get("AFFECTED_ENTITIES")),
            _from_json_data(str, data.get("DATA_SOURCE")),
            _from_json_data(str, data.get("RECORD_ID")),
            _from_json_data(InterestingEntities, data.get("XXX_INTERESTING_ENTITIES")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["AFFECTED_ENTITIES"] = _to_json_data(self.affected_entities)
        data["DATA_SOURCE"] = _to_json_data(self.data_source)
        data["RECORD_ID"] = _to_json_data(self.record_id)
        data["XXX_INTERESTING_ENTITIES"] = _to_json_data(self.xxx_interesting_entities)
        return data

@dataclass
class SzEngineSearchByAttributesAttributes:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineSearchByAttributesAttributes':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineSearchByAttributesResponse:
    related_entities_mjd: 'List[RelatedEntity]'
    resolved_entities: 'List[ResolvedEntityAndMatchInfo]'
    search_entity: 'SearchEntity'
    search_request: 'SearchRequest'
    search_statistics: 'List[SearchStatistic]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineSearchByAttributesResponse':
        return cls(
            _from_json_data(List[RelatedEntity], data.get("RELATED_ENTITIES_MJD")),
            _from_json_data(List[ResolvedEntityAndMatchInfo], data.get("RESOLVED_ENTITIES")),
            _from_json_data(SearchEntity, data.get("SEARCH_ENTITY")),
            _from_json_data(SearchRequest, data.get("SEARCH_REQUEST")),
            _from_json_data(List[SearchStatistic], data.get("SEARCH_STATISTICS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["RELATED_ENTITIES_MJD"] = _to_json_data(self.related_entities_mjd)
        data["RESOLVED_ENTITIES"] = _to_json_data(self.resolved_entities)
        data["SEARCH_ENTITY"] = _to_json_data(self.search_entity)
        data["SEARCH_REQUEST"] = _to_json_data(self.search_request)
        data["SEARCH_STATISTICS"] = _to_json_data(self.search_statistics)
        return data

@dataclass
class SzEngineSearchByAttributesSearchProfile:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineSearchByAttributesSearchProfile':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineStreamExportJSONEntityReportResponse:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineStreamExportJSONEntityReportResponse':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineWhyEntitiesResponse:
    entities: 'List[Entity]'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhyEntitiesResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineWhyRecordInEntityResponse:
    entities: 'List[Entity]'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhyRecordInEntityResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineWhyRecordsResponse:
    entities: 'List[Entity]'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhyRecordsResponse':
        return cls(
            _from_json_data(List[Entity], data.get("ENTITIES")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineWhySearchAttributes:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhySearchAttributes':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzEngineWhySearchResponse:
    entities: 'List[EntityForWhySearch]'
    search_entity: 'SearchEntity'
    search_request: 'SearchRequest'
    search_statistics: 'List[SearchStatistic]'
    why_results: 'List[WhyResult]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhySearchResponse':
        return cls(
            _from_json_data(List[EntityForWhySearch], data.get("ENTITIES")),
            _from_json_data(SearchEntity, data.get("SEARCH_ENTITY")),
            _from_json_data(SearchRequest, data.get("SEARCH_REQUEST")),
            _from_json_data(List[SearchStatistic], data.get("SEARCH_STATISTICS")),
            _from_json_data(List[WhyResult], data.get("WHY_RESULTS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITIES"] = _to_json_data(self.entities)
        data["SEARCH_ENTITY"] = _to_json_data(self.search_entity)
        data["SEARCH_REQUEST"] = _to_json_data(self.search_request)
        data["SEARCH_STATISTICS"] = _to_json_data(self.search_statistics)
        data["WHY_RESULTS"] = _to_json_data(self.why_results)
        return data

@dataclass
class SzEngineWhySearchSearchProfile:
    xxx_fixme: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzEngineWhySearchSearchProfile':
        return cls(
            _from_json_data(Fixme, data.get("XXX_FIXME")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_FIXME"] = _to_json_data(self.xxx_fixme)
        return data

@dataclass
class SzProductGetLicenseResponse:
    adv_search: 'int'
    billing: 'str'
    contract: 'str'
    customer: 'str'
    expire_date: 'str'
    issue_date: 'str'
    license_level: 'str'
    license_type: 'str'
    record_limit: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzProductGetLicenseResponse':
        return cls(
            _from_json_data(int, data.get("advSearch")),
            _from_json_data(str, data.get("billing")),
            _from_json_data(str, data.get("contract")),
            _from_json_data(str, data.get("customer")),
            _from_json_data(str, data.get("expireDate")),
            _from_json_data(str, data.get("issueDate")),
            _from_json_data(str, data.get("licenseLevel")),
            _from_json_data(str, data.get("licenseType")),
            _from_json_data(int, data.get("recordLimit")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["advSearch"] = _to_json_data(self.adv_search)
        data["billing"] = _to_json_data(self.billing)
        data["contract"] = _to_json_data(self.contract)
        data["customer"] = _to_json_data(self.customer)
        data["expireDate"] = _to_json_data(self.expire_date)
        data["issueDate"] = _to_json_data(self.issue_date)
        data["licenseLevel"] = _to_json_data(self.license_level)
        data["licenseType"] = _to_json_data(self.license_type)
        data["recordLimit"] = _to_json_data(self.record_limit)
        return data

@dataclass
class SzProductGetVersionResponse:
    build_date: 'str'
    build_number: 'str'
    build_version: 'str'
    compatibility_version: 'CompatibilityVersion'
    product_name: 'str'
    schema_version: 'SchemaVersion'
    version: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'SzProductGetVersionResponse':
        return cls(
            _from_json_data(str, data.get("BUILD_DATE")),
            _from_json_data(str, data.get("BUILD_NUMBER")),
            _from_json_data(str, data.get("BUILD_VERSION")),
            _from_json_data(CompatibilityVersion, data.get("COMPATIBILITY_VERSION")),
            _from_json_data(str, data.get("PRODUCT_NAME")),
            _from_json_data(SchemaVersion, data.get("SCHEMA_VERSION")),
            _from_json_data(str, data.get("VERSION")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["BUILD_DATE"] = _to_json_data(self.build_date)
        data["BUILD_NUMBER"] = _to_json_data(self.build_number)
        data["BUILD_VERSION"] = _to_json_data(self.build_version)
        data["COMPATIBILITY_VERSION"] = _to_json_data(self.compatibility_version)
        data["PRODUCT_NAME"] = _to_json_data(self.product_name)
        data["SCHEMA_VERSION"] = _to_json_data(self.schema_version)
        data["VERSION"] = _to_json_data(self.version)
        return data

@dataclass
class UmfProc:
    name: 'str'
    params: 'List[UmfProcParams]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'UmfProc':
        return cls(
            _from_json_data(str, data.get("NAME")),
            _from_json_data(List[UmfProcParams], data.get("PARAMS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["NAME"] = _to_json_data(self.name)
        data["PARAMS"] = _to_json_data(self.params)
        return data

@dataclass
class UmfProcParamDetails:
    name: 'str'
    value: 'Object'

    @classmethod
    def from_json_data(cls, data: Any) -> 'UmfProcParamDetails':
        return cls(
            _from_json_data(str, data.get("NAME")),
            _from_json_data(Object, data.get("VALUE")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["NAME"] = _to_json_data(self.name)
        data["VALUE"] = _to_json_data(self.value)
        return data

@dataclass
class UmfProcParams:
    param: 'UmfProcParamDetails'

    @classmethod
    def from_json_data(cls, data: Any) -> 'UmfProcParams':
        return cls(
            _from_json_data(UmfProcParamDetails, data.get("PARAM")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["PARAM"] = _to_json_data(self.param)
        return data

@dataclass
class VirtualEntitySynopsis:
    member_records: 'List[MemberRecord]'
    virtual_entity_id: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'VirtualEntitySynopsis':
        return cls(
            _from_json_data(List[MemberRecord], data.get("MEMBER_RECORDS")),
            _from_json_data(str, data.get("VIRTUAL_ENTITY_ID")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["MEMBER_RECORDS"] = _to_json_data(self.member_records)
        data["VIRTUAL_ENTITY_ID"] = _to_json_data(self.virtual_entity_id)
        return data

@dataclass
class WhyKeyDetails:
    confirmations: 'List[Confirmation]'
    denials: 'List[Confirmation]'
    disclosed_relations: 'List[DisclosedRelationsForWhyKeyDetails]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WhyKeyDetails':
        return cls(
            _from_json_data(List[Confirmation], data.get("CONFIRMATIONS")),
            _from_json_data(List[Confirmation], data.get("DENIALS")),
            _from_json_data(List[DisclosedRelationsForWhyKeyDetails], data.get("DISCLOSED_RELATIONS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["CONFIRMATIONS"] = _to_json_data(self.confirmations)
        data["DENIALS"] = _to_json_data(self.denials)
        data["DISCLOSED_RELATIONS"] = _to_json_data(self.disclosed_relations)
        return data

@dataclass
class WhyResult:
    entity_id: 'int'
    """
    The ENTITY_ID is the Senzing-generated identifier for the discovered entity.
    It may change when new information is added.
    """

    entity_id0: 'int'
    focus_records: 'List[FocusRecord]'
    focus_records0: 'List[FocusRecord]'
    internal_id: 'int'
    """
    Internal identifier for the record.
    """

    internal_id0: 'int'
    """
    Internal identifier for the record.
    """

    match_info: 'MatchInfoForWhy'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WhyResult':
        return cls(
            _from_json_data(int, data.get("ENTITY_ID")),
            _from_json_data(int, data.get("ENTITY_ID_2")),
            _from_json_data(List[FocusRecord], data.get("FOCUS_RECORDS")),
            _from_json_data(List[FocusRecord], data.get("FOCUS_RECORDS_2")),
            _from_json_data(int, data.get("INTERNAL_ID")),
            _from_json_data(int, data.get("INTERNAL_ID_2")),
            _from_json_data(MatchInfoForWhy, data.get("MATCH_INFO")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ENTITY_ID"] = _to_json_data(self.entity_id)
        data["ENTITY_ID_2"] = _to_json_data(self.entity_id0)
        data["FOCUS_RECORDS"] = _to_json_data(self.focus_records)
        data["FOCUS_RECORDS_2"] = _to_json_data(self.focus_records0)
        data["INTERNAL_ID"] = _to_json_data(self.internal_id)
        data["INTERNAL_ID_2"] = _to_json_data(self.internal_id0)
        data["MATCH_INFO"] = _to_json_data(self.match_info)
        return data

@dataclass
class Workload:
    api_version: 'str'
    caches: 'WorkloadCaches'
    candidates: 'WorkloadCandidates'
    contention: 'WorkloadContention'
    datetimestamp: 'str'
    expressed_features: 'WorkloadExpressedFeatures'
    generic_detect: 'Fixme'
    license: 'WorkloadLicense'
    loaded_records: 'int'
    lock_waits: 'WorkloadLockWaits'
    processing: 'WorkloadProcessing'
    redo_triggers: 'Dict[str, int]'
    repair_diagnosis: 'WorkloadRepairDiagnosis'
    reresolve: 'WorkloadReresolve'
    scoring: 'WorkloadScoring'
    system_resources: 'WorkloadSystemResources'
    thread_state: 'WorkloadThreadState'
    unresolve: 'WorkloadUnresolve'

    @classmethod
    def from_json_data(cls, data: Any) -> 'Workload':
        return cls(
            _from_json_data(str, data.get("apiVersion")),
            _from_json_data(WorkloadCaches, data.get("caches")),
            _from_json_data(WorkloadCandidates, data.get("candidates")),
            _from_json_data(WorkloadContention, data.get("contention")),
            _from_json_data(str, data.get("datetimestamp")),
            _from_json_data(WorkloadExpressedFeatures, data.get("expressedFeatures")),
            _from_json_data(Fixme, data.get("genericDetect")),
            _from_json_data(WorkloadLicense, data.get("license")),
            _from_json_data(int, data.get("loadedRecords")),
            _from_json_data(WorkloadLockWaits, data.get("lockWaits")),
            _from_json_data(WorkloadProcessing, data.get("processing")),
            _from_json_data(Dict[str, int], data.get("redoTriggers")),
            _from_json_data(WorkloadRepairDiagnosis, data.get("repairDiagnosis")),
            _from_json_data(WorkloadReresolve, data.get("reresolve")),
            _from_json_data(WorkloadScoring, data.get("scoring")),
            _from_json_data(WorkloadSystemResources, data.get("systemResources")),
            _from_json_data(WorkloadThreadState, data.get("threadState")),
            _from_json_data(WorkloadUnresolve, data.get("unresolve")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["apiVersion"] = _to_json_data(self.api_version)
        data["caches"] = _to_json_data(self.caches)
        data["candidates"] = _to_json_data(self.candidates)
        data["contention"] = _to_json_data(self.contention)
        data["datetimestamp"] = _to_json_data(self.datetimestamp)
        data["expressedFeatures"] = _to_json_data(self.expressed_features)
        data["genericDetect"] = _to_json_data(self.generic_detect)
        data["license"] = _to_json_data(self.license)
        data["loadedRecords"] = _to_json_data(self.loaded_records)
        data["lockWaits"] = _to_json_data(self.lock_waits)
        data["processing"] = _to_json_data(self.processing)
        data["redoTriggers"] = _to_json_data(self.redo_triggers)
        data["repairDiagnosis"] = _to_json_data(self.repair_diagnosis)
        data["reresolve"] = _to_json_data(self.reresolve)
        data["scoring"] = _to_json_data(self.scoring)
        data["systemResources"] = _to_json_data(self.system_resources)
        data["threadState"] = _to_json_data(self.thread_state)
        data["unresolve"] = _to_json_data(self.unresolve)
        return data

@dataclass
class WorkloadCaches:
    lib_feat_cache_hit: 'int'
    lib_feat_cache_miss: 'int'
    lib_feat_insert: 'int'
    res_feat_stat_cache_hit: 'int'
    res_feat_stat_cache_miss: 'int'
    res_feat_stat_insert: 'int'
    res_feat_stat_update_attempt: 'int'
    res_feat_stat_update_fail: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadCaches':
        return cls(
            _from_json_data(int, data.get("libFeatCacheHit")),
            _from_json_data(int, data.get("libFeatCacheMiss")),
            _from_json_data(int, data.get("libFeatInsert")),
            _from_json_data(int, data.get("resFeatStatCacheHit")),
            _from_json_data(int, data.get("resFeatStatCacheMiss")),
            _from_json_data(int, data.get("resFeatStatInsert")),
            _from_json_data(int, data.get("resFeatStatUpdateAttempt")),
            _from_json_data(int, data.get("resFeatStatUpdateFail")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["libFeatCacheHit"] = _to_json_data(self.lib_feat_cache_hit)
        data["libFeatCacheMiss"] = _to_json_data(self.lib_feat_cache_miss)
        data["libFeatInsert"] = _to_json_data(self.lib_feat_insert)
        data["resFeatStatCacheHit"] = _to_json_data(self.res_feat_stat_cache_hit)
        data["resFeatStatCacheMiss"] = _to_json_data(self.res_feat_stat_cache_miss)
        data["resFeatStatInsert"] = _to_json_data(self.res_feat_stat_insert)
        data["resFeatStatUpdateAttempt"] = _to_json_data(self.res_feat_stat_update_attempt)
        data["resFeatStatUpdateFail"] = _to_json_data(self.res_feat_stat_update_fail)
        return data

@dataclass
class WorkloadCandidates:
    candidate_builders: 'Dict[str, int]'
    suppressed_candidate_builders: 'Dict[str, int]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadCandidates':
        return cls(
            _from_json_data(Dict[str, int], data.get("candidateBuilders")),
            _from_json_data(Dict[str, int], data.get("suppressedCandidateBuilders")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["candidateBuilders"] = _to_json_data(self.candidate_builders)
        data["suppressedCandidateBuilders"] = _to_json_data(self.suppressed_candidate_builders)
        return data

@dataclass
class WorkloadContention:
    feature: 'Fixme'
    res_ent: 'Fixme'
    valuelatch: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadContention':
        return cls(
            _from_json_data(Fixme, data.get("feature")),
            _from_json_data(Fixme, data.get("resEnt")),
            _from_json_data(Fixme, data.get("valuelatch")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["feature"] = _to_json_data(self.feature)
        data["resEnt"] = _to_json_data(self.res_ent)
        data["valuelatch"] = _to_json_data(self.valuelatch)
        return data

@dataclass
class WorkloadCurrResources:
    active_threads: 'int'
    available_memory: 'str'
    process_memory: 'str'
    worker_threads: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadCurrResources':
        return cls(
            _from_json_data(int, data.get("activeThreads")),
            _from_json_data(str, data.get("availableMemory")),
            _from_json_data(str, data.get("processMemory")),
            _from_json_data(int, data.get("workerThreads")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["activeThreads"] = _to_json_data(self.active_threads)
        data["availableMemory"] = _to_json_data(self.available_memory)
        data["processMemory"] = _to_json_data(self.process_memory)
        data["workerThreads"] = _to_json_data(self.worker_threads)
        return data

@dataclass
class WorkloadExpressedFeatures:
    calls: 'List[WorkloadExpressedFeaturesCall]'
    created: 'Dict[str, int]'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadExpressedFeatures':
        return cls(
            _from_json_data(List[WorkloadExpressedFeaturesCall], data.get("calls")),
            _from_json_data(Dict[str, int], data.get("created")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["calls"] = _to_json_data(self.calls)
        data["created"] = _to_json_data(self.created)
        return data

@dataclass
class WorkloadExpressedFeaturesCall:
    efcall_id: 'int'
    efunc_code: 'str'
    num_calls: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadExpressedFeaturesCall':
        return cls(
            _from_json_data(int, data.get("EFCALL_ID")),
            _from_json_data(str, data.get("EFUNC_CODE")),
            _from_json_data(int, data.get("numCalls")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["EFCALL_ID"] = _to_json_data(self.efcall_id)
        data["EFUNC_CODE"] = _to_json_data(self.efunc_code)
        data["numCalls"] = _to_json_data(self.num_calls)
        return data

@dataclass
class WorkloadInitResources:
    xxx_physical_cores: 'int'
    available_memory: 'str'
    logical_cores: 'int'
    total_memory: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadInitResources':
        return cls(
            _from_json_data(int, data.get("XXX_physicalCores")),
            _from_json_data(str, data.get("availableMemory")),
            _from_json_data(int, data.get("logicalCores")),
            _from_json_data(str, data.get("totalMemory")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["XXX_physicalCores"] = _to_json_data(self.xxx_physical_cores)
        data["availableMemory"] = _to_json_data(self.available_memory)
        data["logicalCores"] = _to_json_data(self.logical_cores)
        data["totalMemory"] = _to_json_data(self.total_memory)
        return data

@dataclass
class WorkloadLicense:
    dsr_limit: 'str'
    status: 'str'
    type: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadLicense':
        return cls(
            _from_json_data(str, data.get("dsrLimit")),
            _from_json_data(str, data.get("status")),
            _from_json_data(str, data.get("type")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["dsrLimit"] = _to_json_data(self.dsr_limit)
        data["status"] = _to_json_data(self.status)
        data["type"] = _to_json_data(self.type)
        return data

@dataclass
class WorkloadLockWaits:
    refresh_locks: 'WorkloadRefreshLocks'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadLockWaits':
        return cls(
            _from_json_data(WorkloadRefreshLocks, data.get("refreshLocks")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["refreshLocks"] = _to_json_data(self.refresh_locks)
        return data

@dataclass
class WorkloadProcessing:
    added_records: 'int'
    ambiguous: 'WorkloadProcessingAmbiguous'
    batch_added_records: 'int'
    deleted_records: 'int'
    details: 'WorkloadProcessingDetails'
    reevaluations: 'int'
    repaired_entities: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadProcessing':
        return cls(
            _from_json_data(int, data.get("addedRecords")),
            _from_json_data(WorkloadProcessingAmbiguous, data.get("ambiguous")),
            _from_json_data(int, data.get("batchAddedRecords")),
            _from_json_data(int, data.get("deletedRecords")),
            _from_json_data(WorkloadProcessingDetails, data.get("details")),
            _from_json_data(int, data.get("reevaluations")),
            _from_json_data(int, data.get("repairedEntities")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["addedRecords"] = _to_json_data(self.added_records)
        data["ambiguous"] = _to_json_data(self.ambiguous)
        data["batchAddedRecords"] = _to_json_data(self.batch_added_records)
        data["deletedRecords"] = _to_json_data(self.deleted_records)
        data["details"] = _to_json_data(self.details)
        data["reevaluations"] = _to_json_data(self.reevaluations)
        data["repairedEntities"] = _to_json_data(self.repaired_entities)
        return data

@dataclass
class WorkloadProcessingAmbiguous:
    actual_test: 'int'
    cached_test: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadProcessingAmbiguous':
        return cls(
            _from_json_data(int, data.get("actualTest")),
            _from_json_data(int, data.get("cachedTest")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["actualTest"] = _to_json_data(self.actual_test)
        data["cachedTest"] = _to_json_data(self.cached_test)
        return data

@dataclass
class WorkloadProcessingDetails:
    added_records: 'int'
    candidates: 'int'
    change_deletes: 'int'
    duration: 'int'
    filtered_obs_feat: 'int'
    new_obs_ent: 'int'
    obs_ent_hash_diff: 'int'
    obs_ent_hash_same: 'int'
    optimized_out: 'int'
    optimized_out_skipped: 'int'
    partially_resolved: 'int'
    retries: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadProcessingDetails':
        return cls(
            _from_json_data(int, data.get("addedRecords")),
            _from_json_data(int, data.get("candidates")),
            _from_json_data(int, data.get("changeDeletes")),
            _from_json_data(int, data.get("duration")),
            _from_json_data(int, data.get("filteredObsFeat")),
            _from_json_data(int, data.get("newObsEnt")),
            _from_json_data(int, data.get("obsEntHashDiff")),
            _from_json_data(int, data.get("obsEntHashSame")),
            _from_json_data(int, data.get("optimizedOut")),
            _from_json_data(int, data.get("optimizedOutSkipped")),
            _from_json_data(int, data.get("partiallyResolved")),
            _from_json_data(int, data.get("retries")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["addedRecords"] = _to_json_data(self.added_records)
        data["candidates"] = _to_json_data(self.candidates)
        data["changeDeletes"] = _to_json_data(self.change_deletes)
        data["duration"] = _to_json_data(self.duration)
        data["filteredObsFeat"] = _to_json_data(self.filtered_obs_feat)
        data["newObsEnt"] = _to_json_data(self.new_obs_ent)
        data["obsEntHashDiff"] = _to_json_data(self.obs_ent_hash_diff)
        data["obsEntHashSame"] = _to_json_data(self.obs_ent_hash_same)
        data["optimizedOut"] = _to_json_data(self.optimized_out)
        data["optimizedOutSkipped"] = _to_json_data(self.optimized_out_skipped)
        data["partiallyResolved"] = _to_json_data(self.partially_resolved)
        data["retries"] = _to_json_data(self.retries)
        return data

@dataclass
class WorkloadRefreshLocks:
    count: 'int'
    max_ms: 'int'
    total_ms: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadRefreshLocks':
        return cls(
            _from_json_data(int, data.get("count")),
            _from_json_data(int, data.get("maxMS")),
            _from_json_data(int, data.get("totalMS")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["count"] = _to_json_data(self.count)
        data["maxMS"] = _to_json_data(self.max_ms)
        data["totalMS"] = _to_json_data(self.total_ms)
        return data

@dataclass
class WorkloadRepairDiagnosis:
    types: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadRepairDiagnosis':
        return cls(
            _from_json_data(int, data.get("types")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["types"] = _to_json_data(self.types)
        return data

@dataclass
class WorkloadReresolve:
    new_feature_ftypes: 'Dict[str, int]'
    suppressed_candidate_builders_for_reresolve: 'Fixme'
    suppressed_scored_feature_type_for_reresolve: 'Fixme'
    triggers: 'WorkloadReresolveTriggers'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadReresolve':
        return cls(
            _from_json_data(Dict[str, int], data.get("newFeatureFTypes")),
            _from_json_data(Fixme, data.get("suppressedCandidateBuildersForReresolve")),
            _from_json_data(Fixme, data.get("suppressedScoredFeatureTypeForReresolve")),
            _from_json_data(WorkloadReresolveTriggers, data.get("triggers")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["newFeatureFTypes"] = _to_json_data(self.new_feature_ftypes)
        data["suppressedCandidateBuildersForReresolve"] = _to_json_data(self.suppressed_candidate_builders_for_reresolve)
        data["suppressedScoredFeatureTypeForReresolve"] = _to_json_data(self.suppressed_scored_feature_type_for_reresolve)
        data["triggers"] = _to_json_data(self.triggers)
        return data

@dataclass
class WorkloadReresolveTriggers:
    abort_retry: 'int'
    multiple_resolvable_candidates: 'int'
    resolve_new_features: 'int'
    skipped: 'int'
    unresolve_movement: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadReresolveTriggers':
        return cls(
            _from_json_data(int, data.get("abortRetry")),
            _from_json_data(int, data.get("multipleResolvableCandidates")),
            _from_json_data(int, data.get("resolveNewFeatures")),
            _from_json_data(int, data.get("skipped")),
            _from_json_data(int, data.get("unresolveMovement")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["abortRetry"] = _to_json_data(self.abort_retry)
        data["multipleResolvableCandidates"] = _to_json_data(self.multiple_resolvable_candidates)
        data["resolveNewFeatures"] = _to_json_data(self.resolve_new_features)
        data["skipped"] = _to_json_data(self.skipped)
        data["unresolveMovement"] = _to_json_data(self.unresolve_movement)
        return data

@dataclass
class WorkloadScoring:
    cache_hit: 'Dict[str, int]'
    cache_miss: 'Dict[str, int]'
    scored_pairs: 'Dict[str, int]'
    suppressed_disclosed_relationship_domain_count: 'int'
    suppressed_scored_feature_type: 'Fixme'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadScoring':
        return cls(
            _from_json_data(Dict[str, int], data.get("cacheHit")),
            _from_json_data(Dict[str, int], data.get("cacheMiss")),
            _from_json_data(Dict[str, int], data.get("scoredPairs")),
            _from_json_data(int, data.get("suppressedDisclosedRelationshipDomainCount")),
            _from_json_data(Fixme, data.get("suppressedScoredFeatureType")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["cacheHit"] = _to_json_data(self.cache_hit)
        data["cacheMiss"] = _to_json_data(self.cache_miss)
        data["scoredPairs"] = _to_json_data(self.scored_pairs)
        data["suppressedDisclosedRelationshipDomainCount"] = _to_json_data(self.suppressed_disclosed_relationship_domain_count)
        data["suppressedScoredFeatureType"] = _to_json_data(self.suppressed_scored_feature_type)
        return data

@dataclass
class WorkloadSystemLoad:
    cpu_idle: 'str'
    cpu_system: 'str'
    cpu_user: 'str'
    cpu_wait: 'str'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadSystemLoad':
        return cls(
            _from_json_data(str, data.get("cpuIdle")),
            _from_json_data(str, data.get("cpuSystem")),
            _from_json_data(str, data.get("cpuUser")),
            _from_json_data(str, data.get("cpuWait")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["cpuIdle"] = _to_json_data(self.cpu_idle)
        data["cpuSystem"] = _to_json_data(self.cpu_system)
        data["cpuUser"] = _to_json_data(self.cpu_user)
        data["cpuWait"] = _to_json_data(self.cpu_wait)
        return data

@dataclass
class WorkloadSystemResources:
    curr_resources: 'WorkloadCurrResources'
    init_resources: 'WorkloadInitResources'
    system_load: 'WorkloadSystemLoad'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadSystemResources':
        return cls(
            _from_json_data(WorkloadCurrResources, data.get("currResources")),
            _from_json_data(WorkloadInitResources, data.get("initResources")),
            _from_json_data(WorkloadSystemLoad, data.get("systemLoad")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["currResources"] = _to_json_data(self.curr_resources)
        data["initResources"] = _to_json_data(self.init_resources)
        data["systemLoad"] = _to_json_data(self.system_load)
        return data

@dataclass
class WorkloadThreadState:
    active: 'int'
    data_latch_contention: 'int'
    governor_contention: 'int'
    idle: 'int'
    loader: 'int'
    obs_ent_contention: 'int'
    res_ent_contention: 'int'
    resolver: 'int'
    scoring: 'int'
    sql_executing: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadThreadState':
        return cls(
            _from_json_data(int, data.get("active")),
            _from_json_data(int, data.get("dataLatchContention")),
            _from_json_data(int, data.get("governorContention")),
            _from_json_data(int, data.get("idle")),
            _from_json_data(int, data.get("loader")),
            _from_json_data(int, data.get("obsEntContention")),
            _from_json_data(int, data.get("resEntContention")),
            _from_json_data(int, data.get("resolver")),
            _from_json_data(int, data.get("scoring")),
            _from_json_data(int, data.get("sqlExecuting")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["active"] = _to_json_data(self.active)
        data["dataLatchContention"] = _to_json_data(self.data_latch_contention)
        data["governorContention"] = _to_json_data(self.governor_contention)
        data["idle"] = _to_json_data(self.idle)
        data["loader"] = _to_json_data(self.loader)
        data["obsEntContention"] = _to_json_data(self.obs_ent_contention)
        data["resEntContention"] = _to_json_data(self.res_ent_contention)
        data["resolver"] = _to_json_data(self.resolver)
        data["scoring"] = _to_json_data(self.scoring)
        data["sqlExecuting"] = _to_json_data(self.sql_executing)
        return data

@dataclass
class WorkloadUnresolve:
    aborted_unresolve: 'int'
    triggers: 'WorkloadUnresolveTriggers'
    unresolve_test: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadUnresolve':
        return cls(
            _from_json_data(int, data.get("abortedUnresolve")),
            _from_json_data(WorkloadUnresolveTriggers, data.get("triggers")),
            _from_json_data(int, data.get("unresolveTest")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["abortedUnresolve"] = _to_json_data(self.aborted_unresolve)
        data["triggers"] = _to_json_data(self.triggers)
        data["unresolveTest"] = _to_json_data(self.unresolve_test)
        return data

@dataclass
class WorkloadUnresolveTriggers:
    ambiguous_multi_resolve: 'int'
    ambiguous_no_resolve: 'int'
    extensive_resolve: 'int'
    normal_resolve: 'int'
    rel_link: 'int'
    update: 'int'

    @classmethod
    def from_json_data(cls, data: Any) -> 'WorkloadUnresolveTriggers':
        return cls(
            _from_json_data(int, data.get("ambiguousMultiResolve")),
            _from_json_data(int, data.get("ambiguousNoResolve")),
            _from_json_data(int, data.get("extensiveResolve")),
            _from_json_data(int, data.get("normalResolve")),
            _from_json_data(int, data.get("relLink")),
            _from_json_data(int, data.get("update")),
        )

    def to_json_data(self) -> Any:
        data: Dict[str, Any] = {}
        data["ambiguousMultiResolve"] = _to_json_data(self.ambiguous_multi_resolve)
        data["ambiguousNoResolve"] = _to_json_data(self.ambiguous_no_resolve)
        data["extensiveResolve"] = _to_json_data(self.extensive_resolve)
        data["normalResolve"] = _to_json_data(self.normal_resolve)
        data["relLink"] = _to_json_data(self.rel_link)
        data["update"] = _to_json_data(self.update)
        return data

def _from_json_data(cls: Any, data: Any) -> Any:
    if data is None or cls in [bool, int, float, str, object] or cls is Any:
        return data
    if cls is datetime:
        return _parse_rfc3339(data)
    if get_origin(cls) is Union:
        return _from_json_data(get_args(cls)[0], data)
    if get_origin(cls) is list:
        return [_from_json_data(get_args(cls)[0], d) for d in data]
    if get_origin(cls) is dict:
        return { k: _from_json_data(get_args(cls)[1], v) for k, v in data.items() }
    return cls.from_json_data(data)

def _to_json_data(data: Any) -> Any:
    if data is None or type(data) in [bool, int, float, str, object]:
        return data
    if type(data) is datetime:
        return data.isoformat()
    if type(data) is list:
        return [_to_json_data(d) for d in data]
    if type(data) is dict:
        return { k: _to_json_data(v) for k, v in data.items() }
    return data.to_json_data()

def _parse_rfc3339(s: str) -> datetime:
    datetime_re = '^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(\.\d+)?([zZ]|((\+|-)(\d{2}):(\d{2})))$'
    match = re.match(datetime_re, s)
    if not match:
        raise ValueError('Invalid RFC3339 date/time', s)

    (year, month, day, hour, minute, second, frac_seconds, offset,
     *tz) = match.groups()

    frac_seconds_parsed = None
    if frac_seconds:
        frac_seconds_parsed = int(float(frac_seconds) * 1_000_000)
    else:
        frac_seconds_parsed = 0

    tzinfo = None
    if offset == 'Z':
        tzinfo = timezone.utc
    else:
        hours = int(tz[2])
        minutes = int(tz[3])
        sign = 1 if tz[1] == '+' else -1

        if minutes not in range(60):
            raise ValueError('minute offset must be in 0..59')

        tzinfo = timezone(timedelta(minutes=sign * (60 * hours + minutes)))

    second_parsed = int(second)
    if second_parsed == 60:
        second_parsed = 59

    return datetime(int(year), int(month), int(day), int(hour), int(minute),
                    second_parsed, frac_seconds_parsed, tzinfo)            
