// Code generated by jtd-codegen for Rust v0.2.1

use chrono::{DateTime, FixedOffset};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;

pub type Senzingsdk = Option<Value>;

#[derive(Serialize, Deserialize)]
pub struct AdditionalScores {
    #[serde(rename = "FULL_SCORE")]
    pub fullScore: i32,

    #[serde(rename = "GENERATION_MATCH")]
    pub generationMatch: i32,

    #[serde(rename = "GNR_FN")]
    pub gnrFn: i32,

    #[serde(rename = "GNR_GN")]
    pub gnrGn: i32,

    #[serde(rename = "GNR_ON")]
    pub gnrOn: i32,

    #[serde(rename = "GNR_SN")]
    pub gnrSn: i32,
}

#[derive(Serialize, Deserialize)]
pub struct AffectedEntity {
    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgAttr {
    #[serde(rename = "ATTR_CLASS")]
    pub attrClass: String,

    #[serde(rename = "ATTR_CODE")]
    pub attrCode: String,

    #[serde(rename = "ATTR_ID")]
    pub attrId: i32,

    #[serde(rename = "DEFAULT_VALUE")]
    pub defaultValue: String,

    #[serde(rename = "FELEM_CODE")]
    pub felemCode: String,

    #[serde(rename = "FELEM_REQ")]
    pub felemReq: String,

    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    #[serde(rename = "INTERNAL")]
    pub internal: String,

    #[serde(rename = "XXX_ADVANCED")]
    pub xxxAdvanced: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgCfbom {
    #[serde(rename = "CFCALL_ID")]
    pub cfcallId: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgCfcall {
    #[serde(rename = "CFCALL_ID")]
    pub cfcallId: i32,

    #[serde(rename = "CFUNC_ID")]
    pub cfuncId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "XXX_EXEC_ORDER")]
    pub xxxExecOrder: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgCfrtn {
    #[serde(rename = "CFRTN_ID")]
    pub cfrtnId: i32,

    #[serde(rename = "CFUNC_ID")]
    pub cfuncId: i32,

    #[serde(rename = "CFUNC_RTNVAL")]
    pub cfuncRtnval: String,

    #[serde(rename = "CLOSE_SCORE")]
    pub closeScore: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "LIKELY_SCORE")]
    pub likelyScore: i32,

    #[serde(rename = "PLAUSIBLE_SCORE")]
    pub plausibleScore: i32,

    #[serde(rename = "SAME_SCORE")]
    pub sameScore: i32,

    #[serde(rename = "UN_LIKELY_SCORE")]
    pub unLikelyScore: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgCfunc {
    #[serde(rename = "ANON_SUPPORT")]
    pub anonSupport: String,

    #[serde(rename = "CFUNC_CODE")]
    pub cfuncCode: String,

    #[serde(rename = "CFUNC_DESC")]
    pub cfuncDesc: String,

    #[serde(rename = "CFUNC_ID")]
    pub cfuncId: i32,

    #[serde(rename = "CONNECT_STR")]
    pub connectStr: String,

    #[serde(rename = "XXX_FUNC_LIB")]
    pub xxxFuncLib: String,

    #[serde(rename = "XXX_FUNC_VER")]
    pub xxxFuncVer: String,

    #[serde(rename = "XXX_JAVA_CLASS_NAME")]
    pub xxxJavaClassName: String,

    #[serde(rename = "XXX_LANGUAGE")]
    pub xxxLanguage: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgDfbom {
    #[serde(rename = "DFCALL_ID")]
    pub dfcallId: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgDfcall {
    #[serde(rename = "DFCALL_ID")]
    pub dfcallId: i32,

    #[serde(rename = "DFUNC_ID")]
    pub dfuncId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "XXX_EXEC_ORDER")]
    pub xxxExecOrder: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgDfunc {
    #[serde(rename = "ANON_SUPPORT")]
    pub anonSupport: String,

    #[serde(rename = "CONNECT_STR")]
    pub connectStr: String,

    #[serde(rename = "DFUNC_CODE")]
    pub dfuncCode: String,

    #[serde(rename = "DFUNC_DESC")]
    pub dfuncDesc: String,

    #[serde(rename = "DFUNC_ID")]
    pub dfuncId: i32,

    #[serde(rename = "XXX_FUNC_LIB")]
    pub xxxFuncLib: String,

    #[serde(rename = "XXX_FUNC_VER")]
    pub xxxFuncVer: String,

    #[serde(rename = "XXX_JAVA_CLASS_NAME")]
    pub xxxJavaClassName: String,

    #[serde(rename = "XXX_LANGUAGE")]
    pub xxxLanguage: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgDsrc {
    #[serde(rename = "DSRC_CODE")]
    pub dsrcCode: String,

    #[serde(rename = "DSRC_DESC")]
    pub dsrcDesc: String,

    #[serde(rename = "DSRC_ID")]
    pub dsrcId: i32,

    #[serde(rename = "RETENTION_LEVEL")]
    pub retentionLevel: String,

    #[serde(rename = "XXX_CONVERSATIONAL")]
    pub xxxConversational: String,

    #[serde(rename = "XXX_DSRC_RELY")]
    pub xxxDsrcRely: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgDsrcInterest {
    #[serde(rename = "XXX_DSRC_ID")]
    pub xxxDsrcId: i32,

    #[serde(rename = "XXX_INTEREST_FLAG")]
    pub xxxInterestFlag: String,

    #[serde(rename = "XXX_MAX_DEGREE")]
    pub xxxMaxDegree: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEbom {
    #[serde(rename = "XXX_ETYPE_ID")]
    pub xxxEtypeId: i32,

    #[serde(rename = "XXX_EXEC_ORDER")]
    pub xxxExecOrder: i32,

    #[serde(rename = "XXX_FTYPE_ID")]
    pub xxxFtypeId: i32,

    #[serde(rename = "XXX_UTYPE_CODE")]
    pub xxxUtypeCode: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEclass {
    #[serde(rename = "XXX_ECLASS_CODE")]
    pub xxxEclassCode: String,

    #[serde(rename = "XXX_ECLASS_DESC")]
    pub xxxEclassDesc: String,

    #[serde(rename = "XXX_ECLASS_ID")]
    pub xxxEclassId: i32,

    #[serde(rename = "XXX_RESOLVE")]
    pub xxxResolve: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEfbom {
    #[serde(rename = "EFCALL_ID")]
    pub efcallId: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FELEM_REQ")]
    pub felemReq: String,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEfcall {
    #[serde(rename = "EFCALL_ID")]
    pub efcallId: i32,

    #[serde(rename = "EFEAT_FTYPE_ID")]
    pub efeatFtypeId: i32,

    #[serde(rename = "EFUNC_ID")]
    pub efuncId: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "IS_VIRTUAL")]
    pub isVirtual: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEfunc {
    #[serde(rename = "CONNECT_STR")]
    pub connectStr: String,

    #[serde(rename = "EFUNC_CODE")]
    pub efuncCode: String,

    #[serde(rename = "EFUNC_DESC")]
    pub efuncDesc: String,

    #[serde(rename = "EFUNC_ID")]
    pub efuncId: i32,

    #[serde(rename = "XXX_FUNC_LIB")]
    pub xxxFuncLib: String,

    #[serde(rename = "XXX_FUNC_VER")]
    pub xxxFuncVer: String,

    #[serde(rename = "XXX_JAVA_CLASS_NAME")]
    pub xxxJavaClassName: String,

    #[serde(rename = "XXX_LANGUAGE")]
    pub xxxLanguage: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgErfrag {
    #[serde(rename = "ERFRAG_CODE")]
    pub erfragCode: String,

    #[serde(rename = "ERFRAG_DEPENDS")]
    pub erfragDepends: String,

    #[serde(rename = "ERFRAG_DESC")]
    pub erfragDesc: String,

    #[serde(rename = "ERFRAG_ID")]
    pub erfragId: i32,

    #[serde(rename = "ERFRAG_SOURCE")]
    pub erfragSource: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgErrule {
    #[serde(rename = "DISQ_ERFRAG_CODE")]
    pub disqErfragCode: String,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    #[serde(rename = "ERRULE_ID")]
    pub erruleId: i32,

    #[serde(rename = "ERRULE_TIER")]
    pub erruleTier: i32,

    #[serde(rename = "QUAL_ERFRAG_CODE")]
    pub qualErfragCode: String,

    #[serde(rename = "RELATE")]
    pub relate: String,

    #[serde(rename = "RESOLVE")]
    pub resolve: String,

    #[serde(rename = "RTYPE_ID")]
    pub rtypeId: i32,

    #[serde(rename = "XXX_ERRULE_DESC")]
    pub xxxErruleDesc: String,

    #[serde(rename = "XXX_REF_SCORE")]
    pub xxxRefScore: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgEtype {
    #[serde(rename = "XXX_ECLASS_ID")]
    pub xxxEclassId: i32,

    #[serde(rename = "XXX_ETYPE_CODE")]
    pub xxxEtypeCode: String,

    #[serde(rename = "XXX_ETYPE_DESC")]
    pub xxxEtypeDesc: String,

    #[serde(rename = "XXX_ETYPE_ID")]
    pub xxxEtypeId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgFbom {
    #[serde(rename = "DERIVED")]
    pub derived: String,

    #[serde(rename = "DISPLAY_LEVEL")]
    pub displayLevel: i32,

    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "XXX_DISPLAY_DELIM")]
    pub xxxDisplayDelim: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgFbovr {
    #[serde(rename = "FTYPE_EXCL")]
    pub ftypeExcl: String,

    #[serde(rename = "FTYPE_FREQ")]
    pub ftypeFreq: String,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "FTYPE_STAB")]
    pub ftypeStab: String,

    #[serde(rename = "UTYPE_CODE")]
    pub utypeCode: String,

    #[serde(rename = "XXX_ECLASS_ID")]
    pub xxxEclassId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgFclass {
    #[serde(rename = "FCLASS_CODE")]
    pub fclassCode: String,

    #[serde(rename = "FCLASS_DESC")]
    pub fclassDesc: String,

    #[serde(rename = "FCLASS_ID")]
    pub fclassId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgFelem {
    #[serde(rename = "DATA_TYPE")]
    pub dataType: String,

    #[serde(rename = "FELEM_CODE")]
    pub felemCode: String,

    #[serde(rename = "FELEM_DESC")]
    pub felemDesc: String,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "XXX_TOKENIZE")]
    pub xxxTokenize: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgFtype {
    #[serde(rename = "ANONYMIZE")]
    pub anonymize: String,

    #[serde(rename = "DERIVED")]
    pub derived: String,

    #[serde(rename = "FCLASS_ID")]
    pub fclassId: i32,

    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    #[serde(rename = "FTYPE_DESC")]
    pub ftypeDesc: String,

    #[serde(rename = "FTYPE_EXCL")]
    pub ftypeExcl: String,

    #[serde(rename = "FTYPE_FREQ")]
    pub ftypeFreq: String,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "FTYPE_STAB")]
    pub ftypeStab: String,

    #[serde(rename = "PERSIST_HISTORY")]
    pub persistHistory: String,

    #[serde(rename = "RTYPE_ID")]
    pub rtypeId: i32,

    #[serde(rename = "SHOW_IN_MATCH_KEY")]
    pub showInMatchKey: String,

    #[serde(rename = "USED_FOR_CAND")]
    pub usedForCand: String,

    #[serde(rename = "VERSION")]
    pub version: i32,

    #[serde(rename = "XXX_DERIVATION")]
    pub xxxDerivation: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgGenericThreshold {
    #[serde(rename = "BEHAVIOR")]
    pub behavior: String,

    #[serde(rename = "CANDIDATE_CAP")]
    pub candidateCap: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "GPLAN_ID")]
    pub gplanId: i32,

    #[serde(rename = "SCORING_CAP")]
    pub scoringCap: i32,

    #[serde(rename = "SEND_TO_REDO")]
    pub sendToRedo: String,
}

#[derive(Serialize, Deserialize)]
pub struct CfgGplan {
    #[serde(rename = "GPLAN_CODE")]
    pub gplanCode: String,

    #[serde(rename = "GPLAN_DESC")]
    pub gplanDesc: String,

    #[serde(rename = "GPLAN_ID")]
    pub gplanId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgLens {
    #[serde(rename = "XXX_LENS_CODE")]
    pub xxxLensCode: String,

    #[serde(rename = "XXX_LENS_DESC")]
    pub xxxLensDesc: String,

    #[serde(rename = "XXX_LENS_ID")]
    pub xxxLensId: i32,
}

pub type CfgLensrl = Vec<Fixme>;

#[derive(Serialize, Deserialize)]
pub struct CfgRclass {
    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "IS_DISCLOSED")]
    pub isDisclosed: String,

    #[serde(rename = "RCLASS_CODE")]
    pub rclassCode: String,

    #[serde(rename = "RCLASS_DESC")]
    pub rclassDesc: String,

    #[serde(rename = "RCLASS_ID")]
    pub rclassId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgRtype {
    #[serde(rename = "BREAK_RES")]
    pub breakRes: String,

    #[serde(rename = "RCLASS_ID")]
    pub rclassId: i32,

    #[serde(rename = "RTYPE_CODE")]
    pub rtypeCode: String,

    #[serde(rename = "RTYPE_DESC")]
    pub rtypeDesc: String,

    #[serde(rename = "RTYPE_ID")]
    pub rtypeId: i32,

    #[serde(rename = "XXX_REL_STRENGTH")]
    pub xxxRelStrength: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgSfcall {
    #[serde(rename = "EXEC_ORDER")]
    pub execOrder: i32,

    #[serde(rename = "FELEM_ID")]
    pub felemId: i32,

    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "SFCALL_ID")]
    pub sfcallId: i32,

    #[serde(rename = "SFUNC_ID")]
    pub sfuncId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CfgSfunc {
    #[serde(rename = "CONNECT_STR")]
    pub connectStr: String,

    #[serde(rename = "SFUNC_CODE")]
    pub sfuncCode: String,

    #[serde(rename = "SFUNC_DESC")]
    pub sfuncDesc: String,

    #[serde(rename = "SFUNC_ID")]
    pub sfuncId: i32,

    #[serde(rename = "XXX_FUNC_LIB")]
    pub xxxFuncLib: String,

    #[serde(rename = "XXX_FUNC_VER")]
    pub xxxFuncVer: String,

    #[serde(rename = "XXX_JAVA_CLASS_NAME")]
    pub xxxJavaClassName: String,

    #[serde(rename = "XXX_LANGUAGE")]
    pub xxxLanguage: String,
}

#[derive(Serialize, Deserialize)]
pub struct ConfigBaseVersion {
    #[serde(rename = "BUILD_DATE")]
    pub buildDate: String,

    #[serde(rename = "BUILD_NUMBER")]
    pub buildNumber: String,

    #[serde(rename = "BUILD_VERSION")]
    pub buildVersion: String,

    #[serde(rename = "COMPATIBILITY_VERSION")]
    pub compatibilityVersion: CompatibilityVersion,

    #[serde(rename = "VERSION")]
    pub version: String,

    #[serde(rename = "XXX_PRODUCT_NAME")]
    pub xxxProductName: String,
}

pub type CandidateKeysForMatchInfo = HashMap<String, Vec<MatchInfoForAttribute>>;

#[derive(Serialize, Deserialize)]
pub struct CandidateKeysForSearchStatistic {
    #[serde(rename = "FEATURE_TYPES")]
    pub featureTypes: Vec<FeatureType>,

    #[serde(rename = "SUMMARY")]
    pub summary: CandidateKeysSummary,
}

#[derive(Serialize, Deserialize)]
pub struct CandidateKeysSummary {
    #[serde(rename = "FOUND")]
    pub found: i32,

    #[serde(rename = "GENERIC")]
    pub generic: i32,

    #[serde(rename = "NOT_FOUND")]
    pub notFound: i32,
}

#[derive(Serialize, Deserialize)]
pub struct CompatibilityVersion {
    #[serde(rename = "CONFIG_VERSION")]
    pub configVersion: String,
}

#[derive(Serialize, Deserialize)]
pub struct Config {
    /// A user-provided description of the configuration.
    #[serde(rename = "CONFIG_COMMENTS")]
    pub configComments: String,

    /// An internally-generated unique identifier of the configuration.
    #[serde(rename = "CONFIG_ID")]
    pub configId: i32,

    /// The timestamp of the original registration of the configuration.
    #[serde(rename = "SYS_CREATE_DT")]
    pub sysCreateDt: String,
}

#[derive(Serialize, Deserialize)]
pub struct Confirmation {
    #[serde(rename = "ADDITIONAL_SCORES")]
    pub additionalScores: AdditionalScores,

    #[serde(rename = "CANDIDATE_FEAT_DESC")]
    pub candidateFeatDesc: String,

    #[serde(rename = "CANDIDATE_FEAT_ID")]
    pub candidateFeatId: i32,

    #[serde(rename = "CANDIDATE_FEAT_USAGE_TYPE")]
    pub candidateFeatUsageType: String,

    /// Internal use.
    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    #[serde(rename = "INBOUND_FEAT_DESC")]
    pub inboundFeatDesc: String,

    #[serde(rename = "INBOUND_FEAT_ID")]
    pub inboundFeatId: i32,

    #[serde(rename = "INBOUND_FEAT_USAGE_TYPE")]
    pub inboundFeatUsageType: String,

    #[serde(rename = "SCORE")]
    pub score: i32,

    #[serde(rename = "SCORE_BEHAVIOR")]
    pub scoreBehavior: String,

    #[serde(rename = "SCORE_BUCKET")]
    pub scoreBucket: String,

    #[serde(rename = "SOURCE")]
    pub source: String,

    #[serde(rename = "TOKEN")]
    pub token: String,
}

#[derive(Serialize, Deserialize)]
pub struct DataSource {
    /// The unique text identifier of the datasource. It should be UPPER_CASE
    /// ASCII without spaces. It will be used as a JSON key.
    #[serde(rename = "DSRC_CODE")]
    pub dsrcCode: String,

    /// The unique internal integer identifier of the datasource.
    #[serde(rename = "DSRC_ID")]
    pub dsrcId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct DisclosedRelationsForMatchInfo {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    #[serde(rename = "ENTITY_ROLES")]
    pub entityRoles: Vec<EntityRoles>,

    #[serde(rename = "RELATED_ROLES")]
    pub relatedRoles: Vec<RelatedRoles>,

    #[serde(rename = "REL_LINK")]
    pub relLink: Vec<RelLink>,

    #[serde(rename = "XXX_REL_ANCHOR")]
    pub xxxRelAnchor: Vec<RelAnchor>,

    #[serde(rename = "XXX_REL_POINTER")]
    pub xxxRelPointer: Vec<RelPointer>,
}

#[derive(Serialize, Deserialize)]
pub struct DisclosedRelationsForMatchInfoForWhy {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    #[serde(rename = "FEAT_ID")]
    pub featId: i32,

    #[serde(rename = "FEAT_USAGE_TYPE")]
    pub featUsageType: String,

    #[serde(rename = "LINKED_FEAT_ID")]
    pub linkedFeatId: i32,

    #[serde(rename = "LINKED_FEAT_TYPE")]
    pub linkedFeatType: String,

    #[serde(rename = "REL_ANCHOR")]
    pub relAnchor: Vec<RelAnchor>,

    #[serde(rename = "REL_LINK")]
    pub relLink: Vec<RelLink>,

    #[serde(rename = "REL_POINTER")]
    pub relPointer: Vec<RelPointer>,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "XXX_FEAT_DESC")]
    pub xxxFeatDesc: String,

    #[serde(rename = "XXX_LINKED_FEAT_DESC")]
    pub xxxLinkedFeatDesc: String,
}

#[derive(Serialize, Deserialize)]
pub struct DisclosedRelationsForWhyKeyDetails {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    #[serde(rename = "ENTITY_ROLES")]
    pub entityRoles: Vec<EntityRoles>,

    #[serde(rename = "RELATED_ROLES")]
    pub relatedRoles: Vec<RelatedRoles>,
}

#[derive(Serialize, Deserialize)]
pub struct Entity {
    #[serde(rename = "RELATED_ENTITIES")]
    pub relatedEntities: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntity,
}

#[derive(Serialize, Deserialize)]
pub struct EntityForResolvedEntity {
    #[serde(rename = "RELATED_ENTITIES")]
    pub relatedEntities: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntity,
}

#[derive(Serialize, Deserialize)]
pub struct EntityForWhySearch {
    #[serde(rename = "RELATED_ENTITIES")]
    pub relatedEntities: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntity,
}

#[derive(Serialize, Deserialize)]
pub struct EntityNetworkLink {
    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    /// Indicates if this is an ambiguous relationship.
    #[serde(rename = "IS_AMBIGUOUS")]
    pub isAmbiguous: i32,

    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "IS_DISCLOSED")]
    pub isDisclosed: i32,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    #[serde(rename = "MATCH_KEY_DETAILS")]
    pub matchKeyDetails: MatchKeyDetails,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    #[serde(rename = "MAX_ENTITY_ID")]
    pub maxEntityId: i32,

    #[serde(rename = "MIN_ENTITY_ID")]
    pub minEntityId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct EntityPath {
    #[serde(rename = "END_ENTITY_ID")]
    pub endEntityId: i32,

    #[serde(rename = "ENTITIES")]
    pub entities: Vec<i32>,

    #[serde(rename = "START_ENTITY_ID")]
    pub startEntityId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct EntityPathLink {
    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    /// Indicates if this is an ambiguous relationship.
    #[serde(rename = "IS_AMBIGUOUS")]
    pub isAmbiguous: i32,

    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "IS_DISCLOSED")]
    pub isDisclosed: i32,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    #[serde(rename = "MATCH_KEY_DETAILS")]
    pub matchKeyDetails: MatchKeyDetails,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    #[serde(rename = "MAX_ENTITY_ID")]
    pub maxEntityId: i32,

    #[serde(rename = "MIN_ENTITY_ID")]
    pub minEntityId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct EntityRoles {
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "ROLE")]
    pub role: String,
}

#[derive(Serialize, Deserialize)]
pub struct Feature {
    /// Internal use.
    #[serde(rename = "FELEM_CODE")]
    pub felemCode: String,

    /// Internal use.
    #[serde(rename = "FELEM_VALUE")]
    pub felemValue: String,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureDescriptionValue {
    #[serde(rename = "ATTRIBUTES")]
    pub attributes: HashMap<String, String>,

    #[serde(rename = "CANDIDATE_CAP_REACHED")]
    pub candidateCapReached: String,

    #[serde(rename = "ENTITY_COUNT")]
    pub entityCount: i32,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "FEAT_DESC_VALUES")]
    pub featDescValues: Vec<FeatureDescriptionValueDetails>,

    /// Internal use.
    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,

    #[serde(rename = "SCORING_CAP_REACHED")]
    pub scoringCapReached: String,

    #[serde(rename = "SUPPRESSED")]
    pub suppressed: String,

    #[serde(rename = "USED_FOR_CAND")]
    pub usedForCand: String,

    #[serde(rename = "USED_FOR_SCORING")]
    pub usedForScoring: String,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureDescriptionValueDetails {
    #[serde(rename = "CANDIDATE_CAP_REACHED")]
    pub candidateCapReached: String,

    #[serde(rename = "ENTITY_COUNT")]
    pub entityCount: i32,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,

    #[serde(rename = "SCORING_CAP_REACHED")]
    pub scoringCapReached: String,

    #[serde(rename = "SUPPRESSED")]
    pub suppressed: String,

    #[serde(rename = "USED_FOR_CAND")]
    pub usedForCand: String,

    #[serde(rename = "USED_FOR_SCORING")]
    pub usedForScoring: String,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureForAttributes {
    #[serde(rename = "ATTRIBUTES")]
    pub attributes: SenzingEntitySpecification,

    #[serde(rename = "CANDIDATE_CAP_REACHED")]
    pub candidateCapReached: String,

    #[serde(rename = "ENTITY_COUNT")]
    pub entityCount: i32,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC_VALUES")]
    pub featDescValues: Vec<FeatureDescriptionValue>,

    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,

    #[serde(rename = "SCORING_CAP_REACHED")]
    pub scoringCapReached: String,

    /// Label to identify how some features are being used (can also change some
    /// features behavior).
    #[serde(rename = "USAGE_TYPE")]
    pub usageType: String,

    #[serde(rename = "USED_FOR_CAND")]
    pub usedForCand: String,

    #[serde(rename = "USED_FOR_SCORING")]
    pub usedForScoring: String,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureForGetEntity {
    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC_VALUES")]
    pub featDescValues: Vec<FeatureDescriptionValue>,

    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,

    /// Label to identify how some features are being used (can also change some
    /// features behavior).
    #[serde(rename = "USAGE_TYPE")]
    pub usageType: String,

    #[serde(rename = "XXX_ATTRIBUTES")]
    pub xxxAttributes: Vec<SenzingEntitySpecification>,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureId {
    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,

    /// Label to identify how some features are being used (can also change some
    /// features behavior).
    #[serde(rename = "USAGE_TYPE")]
    pub usageType: String,
}

#[derive(Serialize, Deserialize)]
pub struct FeatureScoreForAttribute {
    #[serde(rename = "ADDITIONAL_SCORES")]
    pub additionalScores: AdditionalScores,

    #[serde(rename = "CANDIDATE_FEAT_DESC")]
    pub candidateFeatDesc: String,

    #[serde(rename = "CANDIDATE_FEAT_ID")]
    pub candidateFeatId: i32,

    #[serde(rename = "CANDIDATE_FEAT_USAGE_TYPE")]
    pub candidateFeatUsageType: String,

    #[serde(rename = "INBOUND_FEAT_DESC")]
    pub inboundFeatDesc: String,

    #[serde(rename = "INBOUND_FEAT_ID")]
    pub inboundFeatId: i32,

    #[serde(rename = "INBOUND_FEAT_USAGE_TYPE")]
    pub inboundFeatUsageType: String,

    #[serde(rename = "SCORE")]
    pub score: i32,

    #[serde(rename = "SCORE_BEHAVIOR")]
    pub scoreBehavior: String,

    #[serde(rename = "SCORE_BUCKET")]
    pub scoreBucket: String,
}

pub type FeatureScores = HashMap<String, Vec<FeatureScoreForAttribute>>;

#[derive(Serialize, Deserialize)]
pub struct FeatureType {
    #[serde(rename = "FOUND")]
    pub found: i32,

    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    #[serde(rename = "GENERIC")]
    pub generic: i32,

    #[serde(rename = "NOT_FOUND")]
    pub notFound: i32,
}

#[derive(Serialize, Deserialize)]
pub struct FinalState {
    #[serde(rename = "NEED_REEVALUATION")]
    pub needReevaluation: i32,

    #[serde(rename = "VIRTUAL_ENTITIES")]
    pub virtualEntities: Vec<VirtualEntitySynopsis>,
}

#[derive(Serialize, Deserialize)]
pub struct Fixme {
    #[serde(rename = "FIXME_KEY")]
    pub fixmeKey: String,
}

#[derive(Serialize, Deserialize)]
pub struct FocusRecord {
    /// A label identifying the provenance of the record. FIXME: An example
    /// of differences.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,
}

#[derive(Serialize, Deserialize)]
pub struct G2configSettings {
    #[serde(rename = "METAPHONE_VERSION")]
    pub metaphoneVersion: i32,
}

#[derive(Serialize, Deserialize)]
pub struct G2config {
    #[serde(rename = "CFG_ATTR")]
    pub cfgAttr: Vec<CfgAttr>,

    #[serde(rename = "CFG_CFBOM")]
    pub cfgCfbom: Vec<CfgCfbom>,

    #[serde(rename = "CFG_CFCALL")]
    pub cfgCfcall: Vec<CfgCfcall>,

    #[serde(rename = "CFG_CFRTN")]
    pub cfgCfrtn: Vec<CfgCfrtn>,

    #[serde(rename = "CFG_CFUNC")]
    pub cfgCfunc: Vec<CfgCfunc>,

    #[serde(rename = "CFG_DFBOM")]
    pub cfgDfbom: Vec<CfgDfbom>,

    #[serde(rename = "CFG_DFCALL")]
    pub cfgDfcall: Vec<CfgDfcall>,

    #[serde(rename = "CFG_DFUNC")]
    pub cfgDfunc: Vec<CfgDfunc>,

    #[serde(rename = "CFG_DSRC")]
    pub cfgDsrc: Vec<CfgDsrc>,

    #[serde(rename = "CFG_DSRC_INTEREST")]
    pub cfgDsrcInterest: Vec<CfgDsrcInterest>,

    #[serde(rename = "CFG_EBOM")]
    pub cfgEbom: Vec<CfgEbom>,

    #[serde(rename = "CFG_EFBOM")]
    pub cfgEfbom: Vec<CfgEfbom>,

    #[serde(rename = "CFG_EFCALL")]
    pub cfgEfcall: Vec<CfgEfcall>,

    #[serde(rename = "CFG_EFUNC")]
    pub cfgEfunc: Vec<CfgEfunc>,

    #[serde(rename = "CFG_ERFRAG")]
    pub cfgErfrag: Vec<CfgErfrag>,

    #[serde(rename = "CFG_ERRULE")]
    pub cfgErrule: Vec<CfgErrule>,

    #[serde(rename = "CFG_FBOM")]
    pub cfgFbom: Vec<CfgFbom>,

    #[serde(rename = "CFG_FBOVR")]
    pub cfgFbovr: Vec<CfgFbovr>,

    #[serde(rename = "CFG_FCLASS")]
    pub cfgFclass: Vec<CfgFclass>,

    #[serde(rename = "CFG_FELEM")]
    pub cfgFelem: Vec<CfgFelem>,

    #[serde(rename = "CFG_FTYPE")]
    pub cfgFtype: Vec<CfgFtype>,

    #[serde(rename = "CFG_GENERIC_THRESHOLD")]
    pub cfgGenericThreshold: Vec<CfgGenericThreshold>,

    #[serde(rename = "CFG_GPLAN")]
    pub cfgGplan: Vec<CfgGplan>,

    #[serde(rename = "CFG_RCLASS")]
    pub cfgRclass: Vec<CfgRclass>,

    #[serde(rename = "CFG_RTYPE")]
    pub cfgRtype: Vec<CfgRtype>,

    #[serde(rename = "CFG_SFCALL")]
    pub cfgSfcall: Vec<CfgSfcall>,

    #[serde(rename = "CFG_SFUNC")]
    pub cfgSfunc: Vec<CfgSfunc>,

    #[serde(rename = "CONFIG_BASE_VERSION")]
    pub configBaseVersion: ConfigBaseVersion,

    #[serde(rename = "SETTINGS")]
    pub settings: G2configSettings,

    #[serde(rename = "SYS_OOM")]
    pub sysOom: Vec<SysOom>,

    #[serde(rename = "XXX_CFG_ECLASS")]
    pub xxxCfgEclass: Vec<CfgEclass>,

    #[serde(rename = "XXX_CFG_ETYPE")]
    pub xxxCfgEtype: Vec<CfgEtype>,

    #[serde(rename = "XXX_CFG_LENS")]
    pub xxxCfgLens: Vec<CfgLens>,

    #[serde(rename = "XXX_CFG_LENSRL")]
    pub xxxCfgLensrl: Vec<CfgLensrl>,
}

#[derive(Serialize, Deserialize)]
pub struct HowResults {
    #[serde(rename = "FINAL_STATE")]
    pub finalState: FinalState,

    #[serde(rename = "RESOLUTION_STEPS")]
    pub resolutionSteps: Vec<ResolutionStep>,
}

#[derive(Serialize, Deserialize)]
pub struct InterestingEntities {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<InterestingEntity>,

    #[serde(rename = "NOTICES")]
    pub notices: Vec<Notice>,
}

#[derive(Serialize, Deserialize)]
pub struct InterestingEntity {
    #[serde(rename = "DEGREES")]
    pub degrees: i32,

    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,

    #[serde(rename = "FLAGS")]
    pub flags: Vec<String>,

    #[serde(rename = "SAMPLE_RECORDS")]
    pub sampleRecords: Vec<SampleRecord>,
}

#[derive(Serialize, Deserialize)]
pub struct MatchInfo {
    #[serde(rename = "CANDIDATE_KEYS")]
    pub candidateKeys: CandidateKeysForMatchInfo,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    #[serde(rename = "FEATURE_SCORES")]
    pub featureScores: FeatureScores,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    #[serde(rename = "MATCH_KEY_DETAILS")]
    pub matchKeyDetails: MatchKeyDetails,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    #[serde(rename = "XXX_DISCLOSED_RELATIONS")]
    pub xxxDisclosedRelations: DisclosedRelationsForMatchInfo,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    #[serde(rename = "XXX_WHY_ERRULE_CODE")]
    pub xxxWhyErruleCode: String,

    #[serde(rename = "XXX_WHY_KEY")]
    pub xxxWhyKey: String,
}

#[derive(Serialize, Deserialize)]
pub struct MatchInfoForAttribute {
    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "FEAT_ID")]
    pub featId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct MatchInfoForWhy {
    #[serde(rename = "CANDIDATE_KEYS")]
    pub candidateKeys: HashMap<String, Vec<MatchInfoForAttribute>>,

    #[serde(rename = "DISCLOSED_RELATIONS")]
    pub disclosedRelations: DisclosedRelationsForMatchInfoForWhy,

    #[serde(rename = "FEATURE_SCORES")]
    pub featureScores: FeatureScores,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    #[serde(rename = "WHY_ERRULE_CODE")]
    pub whyErruleCode: String,

    #[serde(rename = "WHY_KEY")]
    pub whyKey: String,

    #[serde(rename = "WHY_KEY_DETAILS")]
    pub whyKeyDetails: WhyKeyDetails,
}

#[derive(Serialize, Deserialize)]
pub struct MatchKeyDetails {
    #[serde(rename = "CONFIRMATIONS")]
    pub confirmations: Vec<Confirmation>,

    #[serde(rename = "DENIALS")]
    pub denials: Vec<Confirmation>,

    #[serde(rename = "DISCLOSED_RELATIONS")]
    pub disclosedRelations: Vec<DisclosedRelationsForMatchInfo>,

    #[serde(rename = "REL_LINKS")]
    pub relLinks: Vec<RelLink>,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "XXX_ERRULE_CODE")]
    pub xxxErruleCode: String,
}

#[derive(Serialize, Deserialize)]
pub struct MemberRecord {
    /// Internal identifier for the record.
    #[serde(rename = "INTERNAL_ID")]
    pub internalId: i32,

    #[serde(rename = "RECORDS")]
    pub records: Vec<Record>,
}

#[derive(Serialize, Deserialize)]
pub struct Notice {
    #[serde(rename = "CODE")]
    pub code: String,

    #[serde(rename = "DESCRIPTION")]
    pub description: String,
}

pub type Object = String;

#[derive(Serialize, Deserialize)]
pub struct Record {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForAttributes>>,

    #[serde(rename = "FEATURE_IDS")]
    pub featureIds: Vec<FeatureId>,

    #[serde(rename = "FIRST_SEEN_DT")]
    pub firstSeenDt: DateTime<FixedOffset>,

    /// Internal identifier for the record.
    #[serde(rename = "INTERNAL_ID")]
    pub internalId: i32,

    #[serde(rename = "JSON_DATA")]
    pub jsonData: HashMap<String, Object>,

    #[serde(rename = "LAST_SEEN_DT")]
    pub lastSeenDt: DateTime<FixedOffset>,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "UNMAPPED_DATA")]
    pub unmappedData: HashMap<String, Object>,

    #[serde(rename = "XXX_ADDRESS_DATA")]
    pub xxxAddressData: Vec<String>,

    #[serde(rename = "XXX_ATTRIBUTE_DATA")]
    pub xxxAttributeData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DATA")]
    pub xxxEntityData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DESC")]
    pub xxxEntityDesc: String,

    #[serde(rename = "XXX_ENTITY_KEY")]
    pub xxxEntityKey: String,

    #[serde(rename = "XXX_ENTITY_TYPE")]
    pub xxxEntityType: String,

    #[serde(rename = "XXX_IDENTIFIER_DATA")]
    pub xxxIdentifierData: Vec<String>,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    #[serde(rename = "XXX_NAME_DATA")]
    pub xxxNameData: Vec<String>,

    #[serde(rename = "XXX_OTHER_DATA")]
    pub xxxOtherData: Vec<String>,

    #[serde(rename = "XXX_PHONE_DATA")]
    pub xxxPhoneData: Vec<String>,

    #[serde(rename = "XXX_RELATIONSHIP_DATA")]
    pub xxxRelationshipData: Vec<String>,
}

#[derive(Serialize, Deserialize)]
pub struct RecordForGetEntity {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForAttributes>>,

    #[serde(rename = "FEATURE_IDS")]
    pub featureIds: Vec<FeatureId>,

    #[serde(rename = "FIRST_SEEN_DT")]
    pub firstSeenDt: DateTime<FixedOffset>,

    /// Internal identifier for the record.
    #[serde(rename = "INTERNAL_ID")]
    pub internalId: i32,

    #[serde(rename = "JSON_DATA")]
    pub jsonData: HashMap<String, Object>,

    #[serde(rename = "LAST_SEEN_DT")]
    pub lastSeenDt: DateTime<FixedOffset>,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "UNMAPPED_DATA")]
    pub unmappedData: HashMap<String, Object>,

    #[serde(rename = "XXX_ADDRESS_DATA")]
    pub xxxAddressData: Vec<String>,

    #[serde(rename = "XXX_ATTRIBUTE_DATA")]
    pub xxxAttributeData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DATA")]
    pub xxxEntityData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DESC")]
    pub xxxEntityDesc: String,

    #[serde(rename = "XXX_ENTITY_KEY")]
    pub xxxEntityKey: String,

    #[serde(rename = "XXX_ENTITY_TYPE")]
    pub xxxEntityType: String,

    #[serde(rename = "XXX_IDENTIFIER_DATA")]
    pub xxxIdentifierData: Vec<String>,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    #[serde(rename = "XXX_NAME_DATA")]
    pub xxxNameData: Vec<String>,

    #[serde(rename = "XXX_OTHER_DATA")]
    pub xxxOtherData: Vec<String>,

    #[serde(rename = "XXX_PHONE_DATA")]
    pub xxxPhoneData: Vec<String>,

    #[serde(rename = "XXX_RELATIONSHIP_DATA")]
    pub xxxRelationshipData: Vec<String>,
}

#[derive(Serialize, Deserialize)]
pub struct RecordKey {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,
}

#[derive(Serialize, Deserialize)]
pub struct RecordKeys {
    /// A list of (data source code, record id) pairs.
    #[serde(rename = "RECORDS")]
    pub records: Vec<RecordKey>,
}

#[derive(Serialize, Deserialize)]
pub struct RecordSummary {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The number of records for the entity with the same data source code.
    #[serde(rename = "RECORD_COUNT")]
    pub recordCount: i32,

    #[serde(rename = "XXX_FIRST_SEEN_DT")]
    pub xxxFirstSeenDt: DateTime<FixedOffset>,

    #[serde(rename = "XXX_LAST_SEEN_DT")]
    pub xxxLastSeenDt: DateTime<FixedOffset>,
}

#[derive(Serialize, Deserialize)]
pub struct RelAnchor {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "FEAT_ID")]
    pub featId: i32,

    #[serde(rename = "LINKED_FEAT_DESC")]
    pub linkedFeatDesc: String,

    #[serde(rename = "LINKED_FEAT_ID")]
    pub linkedFeatId: i32,

    #[serde(rename = "LINKED_FEAT_TYPE")]
    pub linkedFeatType: String,

    #[serde(rename = "LINKED_FEAT_USAGE_TYPE")]
    pub linkedFeatUsageType: String,

    #[serde(rename = "XXX_REL_POINTER")]
    pub xxxRelPointer: Vec<RelPointer>,
}

#[derive(Serialize, Deserialize)]
pub struct RelLink {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "FEAT_ID")]
    pub featId: i32,

    #[serde(rename = "FEAT_USAGE_TYPE")]
    pub featUsageType: String,

    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    #[serde(rename = "LINKED_FEAT_DESC")]
    pub linkedFeatDesc: String,

    #[serde(rename = "LINKED_FEAT_ID")]
    pub linkedFeatId: i32,

    #[serde(rename = "LINKED_FEAT_TYPE")]
    pub linkedFeatType: String,

    #[serde(rename = "LINKED_FEAT_USAGE_TYPE")]
    pub linkedFeatUsageType: String,

    #[serde(rename = "REL_TYPE")]
    pub relType: String,
}

#[derive(Serialize, Deserialize)]
pub struct RelPointer {
    #[serde(rename = "DOMAIN")]
    pub domain: String,

    /// Describes the attributes that make up the feature.
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "FEAT_ID")]
    pub featId: i32,

    #[serde(rename = "FEAT_USAGE_TYPE")]
    pub featUsageType: String,

    #[serde(rename = "LINKED_FEAT_DESC")]
    pub linkedFeatDesc: String,

    #[serde(rename = "LINKED_FEAT_ID")]
    pub linkedFeatId: i32,

    #[serde(rename = "LINKED_FEAT_TYPE")]
    pub linkedFeatType: String,
}

#[derive(Serialize, Deserialize)]
pub struct RelatedEntity {
    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,

    /// A name this entity goes by. An entity could have multiple names.
    #[serde(rename = "ENTITY_NAME")]
    pub entityName: String,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "ERRULE_CODE")]
    pub erruleCode: String,

    /// Indicates if this is an ambiguous relationship.
    #[serde(rename = "IS_AMBIGUOUS")]
    pub isAmbiguous: i32,

    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "IS_DISCLOSED")]
    pub isDisclosed: i32,

    /// Representation of matched source record features.
    #[serde(rename = "MATCH_KEY")]
    pub matchKey: String,

    #[serde(rename = "MATCH_KEY_DETAILS")]
    pub matchKeyDetails: MatchKeyDetails,

    #[serde(rename = "MATCH_LEVEL")]
    pub matchLevel: i32,

    /// The type of match that occurred for the record.
    #[serde(rename = "MATCH_LEVEL_CODE")]
    pub matchLevelCode: String,

    #[serde(rename = "RECORDS")]
    pub records: Vec<Record>,

    /// Overview of the source systems the records came from comprising this
    /// related entity.
    #[serde(rename = "RECORD_SUMMARY")]
    pub recordSummary: Vec<RecordSummary>,

    #[serde(rename = "RECORD_TYPES")]
    pub recordTypes: Vec<String>,

    #[serde(rename = "XXX_LAST_SEEN_DT")]
    pub xxxLastSeenDt: DateTime<FixedOffset>,
}

#[derive(Serialize, Deserialize)]
pub struct RelatedRoles {
    #[serde(rename = "FEAT_DESC")]
    pub featDesc: String,

    #[serde(rename = "ROLE")]
    pub role: String,
}

#[derive(Serialize, Deserialize)]
pub struct Repository {
    /// Label for database repository.
    #[serde(rename = "id")]
    pub id: String,

    /// Database connection information.
    #[serde(rename = "location")]
    pub location: String,

    /// Type of database.
    #[serde(rename = "type")]
    pub type_: String,
}

#[derive(Serialize, Deserialize)]
pub struct ResolutionStep {
    #[serde(rename = "INBOUND_VIRTUAL_ENTITY_ID")]
    pub inboundVirtualEntityId: String,

    #[serde(rename = "MATCH_INFO")]
    pub matchInfo: MatchInfo,

    #[serde(rename = "RESULT_VIRTUAL_ENTITY_ID")]
    pub resultVirtualEntityId: String,

    #[serde(rename = "STEP")]
    pub step: i32,

    #[serde(rename = "VIRTUAL_ENTITY_1")]
    pub virtualEntity: VirtualEntitySynopsis,

    #[serde(rename = "VIRTUAL_ENTITY_2")]
    pub virtualEntity0: VirtualEntitySynopsis,
}

#[derive(Serialize, Deserialize)]
pub struct ResolvedEntity {
    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,

    /// A name this entity goes by. An entity could have multiple names.
    #[serde(rename = "ENTITY_NAME")]
    pub entityName: String,

    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForAttributes>>,

    #[serde(rename = "RECORDS")]
    pub records: Vec<Record>,

    /// Overview of the source systems the records came from comprising this
    /// related entity.
    #[serde(rename = "RECORD_SUMMARY")]
    pub recordSummary: Vec<RecordSummary>,

    #[serde(rename = "RECORD_TYPES")]
    pub recordTypes: Vec<String>,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "XXX_ERRULE_CODE")]
    pub xxxErruleCode: String,

    #[serde(rename = "XXX_FEATURE_IDS")]
    pub xxxFeatureIds: Vec<FeatureId>,

    /// Indicates if this is an ambiguous relationship.
    #[serde(rename = "XXX_IS_AMBIGUOUS")]
    pub xxxIsAmbiguous: i32,

    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "XXX_IS_DISCLOSED")]
    pub xxxIsDisclosed: i32,

    #[serde(rename = "XXX_LAST_SEEN_DT")]
    pub xxxLastSeenDt: DateTime<FixedOffset>,

    /// Representation of matched source record features.
    #[serde(rename = "XXX_MATCH_KEY")]
    pub xxxMatchKey: String,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    /// The type of match that occurred for the record.
    #[serde(rename = "XXX_MATCH_LEVEL_CODE")]
    pub xxxMatchLevelCode: String,
}

#[derive(Serialize, Deserialize)]
pub struct ResolvedEntityAndMatchInfo {
    #[serde(rename = "ENTITY")]
    pub entity: EntityForResolvedEntity,

    #[serde(rename = "FEATURES_MJD")]
    pub featuresMjd: EntityForResolvedEntity,

    #[serde(rename = "MATCH_INFO")]
    pub matchInfo: MatchInfo,
}

#[derive(Serialize, Deserialize)]
pub struct ResolvedEntityForGetEntity {
    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,

    /// A name this entity goes by. An entity could have multiple names.
    #[serde(rename = "ENTITY_NAME")]
    pub entityName: String,

    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForGetEntity>>,

    #[serde(rename = "RECORDS")]
    pub records: Vec<RecordForGetEntity>,

    /// Overview of the source systems the records came from comprising this
    /// related entity.
    #[serde(rename = "RECORD_SUMMARY")]
    pub recordSummary: Vec<RecordSummary>,

    #[serde(rename = "RECORD_TYPES")]
    pub recordTypes: Vec<String>,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "XXX_ERRULE_CODE")]
    pub xxxErruleCode: String,

    #[serde(rename = "XXX_FEATURE_IDS")]
    pub xxxFeatureIds: Vec<FeatureId>,

    /// Indicates if this is an ambiguous relationship.
    #[serde(rename = "XXX_IS_AMBIGUOUS")]
    pub xxxIsAmbiguous: i32,

    /// Indicates if this is a disclosed relationship.
    #[serde(rename = "XXX_IS_DISCLOSED")]
    pub xxxIsDisclosed: i32,

    #[serde(rename = "XXX_LAST_SEEN_DT")]
    pub xxxLastSeenDt: DateTime<FixedOffset>,

    /// Representation of matched source record features.
    #[serde(rename = "XXX_MATCH_KEY")]
    pub xxxMatchKey: String,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    /// The type of match that occurred for the record.
    #[serde(rename = "XXX_MATCH_LEVEL_CODE")]
    pub xxxMatchLevelCode: String,
}

#[derive(Serialize, Deserialize)]
pub struct SysOom {
    #[serde(rename = "FTYPE_ID")]
    pub ftypeId: i32,

    #[serde(rename = "NEXT_THRESH")]
    pub nextThresh: i32,

    #[serde(rename = "OOM_LEVEL")]
    pub oomLevel: String,

    #[serde(rename = "OOM_TYPE")]
    pub oomType: String,

    #[serde(rename = "THRESH1_CNT")]
    pub thresh1Cnt: i32,

    #[serde(rename = "THRESH1_OOM")]
    pub thresh1Oom: i32,

    #[serde(rename = "XXX_FELEM_ID")]
    pub xxxFelemId: i32,

    #[serde(rename = "XXX_LENS_ID")]
    pub xxxLensId: i32,

    #[serde(rename = "XXX_LIB_FEAT_ID")]
    pub xxxLibFeatId: i32,

    #[serde(rename = "XXX_LIB_FELEM_ID")]
    pub xxxLibFelemId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SampleRecord {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    #[serde(rename = "FLAGS")]
    pub flags: Vec<String>,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,
}

#[derive(Serialize, Deserialize)]
pub struct SchemaVersion {
    #[serde(rename = "ENGINE_SCHEMA_VERSION")]
    pub engineSchemaVersion: String,

    #[serde(rename = "MAXIMUM_REQUIRED_SCHEMA_VERSION")]
    pub maximumRequiredSchemaVersion: String,

    #[serde(rename = "MINIMUM_REQUIRED_SCHEMA_VERSION")]
    pub minimumRequiredSchemaVersion: String,
}

#[derive(Serialize, Deserialize)]
pub struct SearchEntity {
    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureDescriptionValue>>,

    #[serde(rename = "SUMMARY")]
    pub summary: SearchEntitySummary,
}

#[derive(Serialize, Deserialize)]
pub struct SearchEntitySummary {
    #[serde(rename = "FEATURES_ADDED")]
    pub featuresAdded: i32,

    #[serde(rename = "FEATURES_IGNORED")]
    pub featuresIgnored: i32,

    #[serde(rename = "FEATURES_SEARCHED")]
    pub featuresSearched: i32,

    #[serde(rename = "FEATURES_SUBMITTED")]
    pub featuresSubmitted: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SearchRequest {
    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureDescriptionValue>>,

    #[serde(rename = "JSON_DATA")]
    pub jsonData: String,

    #[serde(rename = "SEARCH_PROFILE")]
    pub searchProfile: String,
}

#[derive(Serialize, Deserialize)]
pub struct SearchStatistic {
    #[serde(rename = "CANDIDATE_KEYS")]
    pub candidateKeys: CandidateKeysForSearchStatistic,
}

#[derive(Serialize, Deserialize)]
pub struct SenzingEntitySpecification {
    /// Domain/system for the account number. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ACCOUNT_DOMAIN")]
    pub accountDomain: String,

    /// Account number (e.g., bank, card). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ACCOUNT_NUMBER")]
    pub accountNumber: String,

    /// City/locality. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_CITY")]
    pub addrCity: String,

    /// Country code. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_COUNTRY")]
    pub addrCountry: String,

    /// Single-field address when parsed components are unavailable.
    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_FULL")]
    pub addrFull: String,

    /// First address line (street, number). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE1")]
    pub addrLine1: String,

    /// Second address line (apt/suite). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE2")]
    pub addrLine2: String,

    /// Third address line (optional). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE3")]
    pub addrLine3: String,

    /// Fourth address line (optional). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE4")]
    pub addrLine4: String,

    /// Fifth address line (optional). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE5")]
    pub addrLine5: String,

    /// Sixth address line (optional). An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_LINE6")]
    pub addrLine6: String,

    /// Postal/ZIP code. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_POSTAL_CODE")]
    pub addrPostalCode: String,

    /// State/province/region code. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "ADDR_STATE")]
    pub addrState: String,

    /// 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
    #[serde(rename = "ADDR_TYPE")]
    pub addrType: String,

    /// 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
    #[serde(rename = "CITIZENSHIP")]
    pub citizenship: String,

    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "DATE_OF_BIRTH")]
    pub dateOfBirth: String,

    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "DATE_OF_DEATH")]
    pub dateOfDeath: String,

    /// Driver's license number. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "DRIVERS_LICENSE_NUMBER")]
    pub driversLicenseNumber: String,

    /// Issuing state/province/country. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "DRIVERS_LICENSE_STATE")]
    pub driversLicenseState: String,

    /// Dun and Bradstreet company identifier. An
    /// attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "DUNS_NUMBER")]
    pub dunsNumber: String,

    /// Email address. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "EMAIL_ADDRESS")]
    pub emailAddress: String,

    /// 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
    #[serde(rename = "EMPLOYER")]
    pub employer: String,

    #[serde(rename = "EMPLOYER_NAME")]
    pub employerName: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "FACEBOOK")]
    pub facebook: String,

    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "GENDER")]
    pub gender: String,

    /// The identifier the entity is associated with. An
    /// attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "GROUP_ASSN_ID_NUMBER")]
    pub groupAssnIdNumber: String,

    /// 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
    #[serde(rename = "GROUP_ASSN_ID_TYPE")]
    pub groupAssnIdType: String,

    /// 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
    #[serde(rename = "GROUP_ASSOCIATION_ORG_NAME")]
    pub groupAssociationOrgName: String,

    /// 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
    #[serde(rename = "GROUP_ASSOCIATION_TYPE")]
    pub groupAssociationType: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "INSTAGRAM")]
    pub instagram: String,

    /// Legal Entity Identifier. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "LEI_NUMBER")]
    pub leiNumber: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "LINKEDIN")]
    pub linkedin: String,

    /// Person given name. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_FIRST")]
    pub nameFirst: String,

    /// 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
    #[serde(rename = "NAME_FULL")]
    pub nameFull: String,

    /// Person surname. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_LAST")]
    pub nameLast: String,

    /// Person middle name/initial. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_MIDDLE")]
    pub nameMiddle: String,

    /// Organization name. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_ORG")]
    pub nameOrg: String,

    /// Person title. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_PREFIX")]
    pub namePrefix: String,

    /// Person suffix. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NAME_SUFFIX")]
    pub nameSuffix: String,

    /// 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
    #[serde(rename = "NAME_TYPE")]
    pub nameType: String,

    /// 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
    #[serde(rename = "NATIONALITY")]
    pub nationality: String,

    /// Issuing country. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NATIONAL_ID_COUNTRY")]
    pub nationalIdCountry: String,

    /// National identifier value. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NATIONAL_ID_NUMBER")]
    pub nationalIdNumber: String,

    /// 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
    #[serde(rename = "NATIONAL_ID_TYPE")]
    pub nationalIdType: String,

    #[serde(rename = "NATIVE_NAME_FULL")]
    pub nativeNameFull: String,

    /// US healthcare provider identifier. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "NPI_NUMBER")]
    pub npiNumber: String,

    /// 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
    #[serde(rename = "OTHER_ID_COUNTRY")]
    pub otherIdCountry: String,

    /// Identification number. An attribute in the Senzing Entity Specification.
    /// See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "OTHER_ID_NUMBER")]
    pub otherIdNumber: String,

    /// Standardized source type. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "OTHER_ID_TYPE")]
    pub otherIdType: String,

    /// Issuing country. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "PASSPORT_COUNTRY")]
    pub passportCountry: String,

    /// Passport number. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "PASSPORT_NUMBER")]
    pub passportNumber: String,

    /// Telephone number. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "PHONE_NUMBER")]
    pub phoneNumber: String,

    /// 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
    #[serde(rename = "PHONE_TYPE")]
    pub phoneType: String,

    /// 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
    #[serde(rename = "PLACE_OF_BIRTH")]
    pub placeOfBirth: String,

    #[serde(rename = "PRIMARY_NAME_FIRST")]
    pub primaryNameFirst: String,

    #[serde(rename = "PRIMARY_NAME_FULL")]
    pub primaryNameFull: String,

    #[serde(rename = "PRIMARY_NAME_LAST")]
    pub primaryNameLast: String,

    #[serde(rename = "PRIMARY_NAME_MIDDLE")]
    pub primaryNameMiddle: String,

    #[serde(rename = "PRIMARY_NAME_ORG")]
    pub primaryNameOrg: String,

    /// 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
    #[serde(rename = "RECORD_TYPE")]
    pub recordType: String,

    /// 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
    #[serde(rename = "REGISTRATION_COUNTRY")]
    pub registrationCountry: String,

    /// Organization registration/incorporation date. An
    /// attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "REGISTRATION_DATE")]
    pub registrationDate: String,

    #[serde(rename = "RELATIONSHIP_KEY")]
    pub relationshipKey: String,

    #[serde(rename = "RELATIONSHIP_TYPE")]
    pub relationshipType: String,

    /// 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
    #[serde(rename = "REL_ANCHOR_DOMAIN")]
    pub relAnchorDomain: String,

    /// 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
    #[serde(rename = "REL_ANCHOR_KEY")]
    pub relAnchorKey: String,

    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "REL_POINTER_DOMAIN")]
    pub relPointerDomain: String,

    /// An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "REL_POINTER_KEY")]
    pub relPointerKey: String,

    /// 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
    #[serde(rename = "REL_POINTER_ROLE")]
    pub relPointerRole: String,

    #[serde(rename = "SECONDARY_NAME_ORG")]
    pub secondaryNameOrg: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "SIGNAL")]
    pub signal: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "SKYPE")]
    pub skype: String,

    /// US Social Security Number; partial accepted. An
    /// attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "SSN_NUMBER")]
    pub ssnNumber: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "TANGO")]
    pub tango: String,

    /// Issuing country. An attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "TAX_ID_COUNTRY")]
    pub taxIdCountry: String,

    /// Tax identification number. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "TAX_ID_NUMBER")]
    pub taxIdNumber: String,

    /// 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
    #[serde(rename = "TAX_ID_TYPE")]
    pub taxIdType: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "TELEGRAM")]
    pub telegram: String,

    /// 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
    #[serde(rename = "TRUSTED_ID_NUMBER")]
    pub trustedIdNumber: String,

    /// 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
    #[serde(rename = "TRUSTED_ID_TYPE")]
    pub trustedIdType: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "TWITTER")]
    pub twitter: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "VIBER")]
    pub viber: String,

    /// Website or domain; typically for organizations. An
    /// attribute in the Senzing Entity Specification. See
    /// https://www.senzing.com/docs/entity_specification
    #[serde(rename = "WEBSITE_ADDRESS")]
    pub websiteAddress: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "WECHAT")]
    pub wechat: String,

    /// Social medial user name. An attribute in the Senzing Entity
    /// Specification. See https://www.senzing.com/docs/entity_specification
    #[serde(rename = "WHATSAPP")]
    pub whatsapp: String,

    #[serde(rename = "XXX_ADDR_FROM_DATE")]
    pub xxxAddrFromDate: String,

    #[serde(rename = "XXX_ADDR_THRU_DATE")]
    pub xxxAddrThruDate: String,

    #[serde(rename = "XXX_PHONE_FROM_DATE")]
    pub xxxPhoneFromDate: String,

    #[serde(rename = "XXX_PHONE_THRU_DATE")]
    pub xxxPhoneThruDate: String,

    #[serde(rename = "ZOOMROOM")]
    pub zoomroom: String,
}

#[derive(Serialize, Deserialize)]
pub struct SzConfigExportResponse {
    #[serde(rename = "G2_CONFIG")]
    pub g2Config: G2config,
}

#[derive(Serialize, Deserialize)]
pub struct SzConfigGetDataSourceRegistryResponse {
    /// The list of registered data sources.
    #[serde(rename = "DATA_SOURCES")]
    pub dataSources: Vec<DataSource>,
}

#[derive(Serialize, Deserialize)]
pub struct SzConfigManagerGetConfigRegistryResponse {
    /// The list of registered configurations.
    #[serde(rename = "CONFIGS")]
    pub configs: Vec<Config>,
}

#[derive(Serialize, Deserialize)]
pub struct SzConfigRegisterDataSourceResponse {
    /// The unique internal integer identifier of the datasource.
    #[serde(rename = "DSRC_ID")]
    pub dsrcId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SzDiagnosticCheckRepositoryPerformanceResponse {
    /// The duration of the test in milliseconds.
    #[serde(rename = "insertTime")]
    pub insertTime: i32,

    /// The total number of records inserted within the insertTime.
    #[serde(rename = "numRecordsInserted")]
    pub numRecordsInserted: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SzDiagnosticGetFeatureResponse {
    /// Internal use.
    #[serde(rename = "ELEMENTS")]
    pub elements: Vec<Feature>,

    /// Internal use.
    #[serde(rename = "FTYPE_CODE")]
    pub ftypeCode: String,

    /// Internal use.
    #[serde(rename = "LIB_FEAT_ID")]
    pub libFeatId: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SzDiagnosticGetRepositoryInfoResponse {
    /// A list of database node connection metadata.
    #[serde(rename = "dataStores")]
    pub dataStores: Vec<Repository>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineAddRecordResponse {
    #[serde(rename = "AFFECTED_ENTITIES")]
    pub affectedEntities: Vec<AffectedEntity>,

    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    #[serde(rename = "INTERESTING_ENTITIES")]
    pub interestingEntities: InterestingEntities,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineDeleteRecordResponse {
    #[serde(rename = "AFFECTED_ENTITIES")]
    pub affectedEntities: Vec<AffectedEntity>,

    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "XXX_INTERESTING_ENTITIES")]
    pub xxxInterestingEntities: InterestingEntities,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineExportCsvEntityReportCsvColumnList {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFetchNextResponse {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindInterestingEntitiesByEntityIdResponse {
    #[serde(rename = "INTERESTING_ENTITIES")]
    pub interestingEntities: InterestingEntities,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindInterestingEntitiesByRecordIdResponse {
    #[serde(rename = "INTERESTING_ENTITIES")]
    pub interestingEntities: InterestingEntities,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindNetworkByEntityIdEntityIds {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindNetworkByEntityIdResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "ENTITY_NETWORK_LINKS")]
    pub entityNetworkLinks: Vec<EntityNetworkLink>,

    #[serde(rename = "ENTITY_PATHS")]
    pub entityPaths: Vec<EntityPath>,

    #[serde(rename = "ENTITY_PATH_LINKS")]
    pub entityPathLinks: Vec<EntityPathLink>,

    #[serde(rename = "MAX_ENTITY_LIMIT_REACHED")]
    pub maxEntityLimitReached: String,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindNetworkByRecordIdRecordKeys {
    /// A list of (data source code, record id) pairs.
    #[serde(rename = "RECORDS")]
    pub records: Vec<RecordKey>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindNetworkByRecordIdResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "ENTITY_NETWORK_LINKS")]
    pub entityNetworkLinks: Vec<EntityNetworkLink>,

    #[serde(rename = "ENTITY_PATHS")]
    pub entityPaths: Vec<EntityPath>,

    #[serde(rename = "ENTITY_PATH_LINKS")]
    pub entityPathLinks: Vec<EntityPathLink>,

    #[serde(rename = "MAX_ENTITY_LIMIT_REACHED")]
    pub maxEntityLimitReached: String,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByEntityIdAvoidEntityIds {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByEntityIdRequiredDataSources {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByEntityIdResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "ENTITY_PATHS")]
    pub entityPaths: Vec<EntityPath>,

    #[serde(rename = "ENTITY_PATH_LINKS")]
    pub entityPathLinks: Vec<EntityPathLink>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByRecordIdAvoidRecordKeys {
    /// A list of (data source code, record id) pairs.
    #[serde(rename = "RECORDS")]
    pub records: Vec<RecordKey>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByRecordIdRequiredDataSources {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineFindPathByRecordIdResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "ENTITY_PATHS")]
    pub entityPaths: Vec<EntityPath>,

    #[serde(rename = "ENTITY_PATH_LINKS")]
    pub entityPathLinks: Vec<EntityPathLink>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetEntityByEntityIdResponse {
    #[serde(rename = "RELATED_ENTITIES")]
    pub relatedEntities: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntityForGetEntity,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetEntityByRecordIdResponse {
    #[serde(rename = "RELATED_ENTITIES")]
    pub relatedEntities: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntityForGetEntity,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetRecordPreviewResponse {
    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForAttributes>>,

    #[serde(rename = "FEATURE_IDS")]
    pub featureIds: Vec<FeatureId>,

    #[serde(rename = "JSON_DATA")]
    pub jsonData: HashMap<String, Object>,

    #[serde(rename = "UNMAPPED_DATA")]
    pub unmappedData: HashMap<String, Object>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetRecordResponse {
    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    #[serde(rename = "FEATURES")]
    pub features: HashMap<String, Vec<FeatureForAttributes>>,

    #[serde(rename = "FEATURE_IDS")]
    pub featureIds: Vec<FeatureId>,

    #[serde(rename = "FIRST_SEEN_DT")]
    pub firstSeenDt: DateTime<FixedOffset>,

    #[serde(rename = "JSON_DATA")]
    pub jsonData: HashMap<String, Object>,

    #[serde(rename = "LAST_SEEN_DT")]
    pub lastSeenDt: DateTime<FixedOffset>,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "UNMAPPED_DATA")]
    pub unmappedData: HashMap<String, Object>,

    #[serde(rename = "XXX_ADDRESS_DATA")]
    pub xxxAddressData: Vec<String>,

    #[serde(rename = "XXX_ATTRIBUTE_DATA")]
    pub xxxAttributeData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DATA")]
    pub xxxEntityData: Vec<String>,

    #[serde(rename = "XXX_ENTITY_DESC")]
    pub xxxEntityDesc: String,

    #[serde(rename = "XXX_ENTITY_KEY")]
    pub xxxEntityKey: String,

    #[serde(rename = "XXX_ENTITY_TYPE")]
    pub xxxEntityType: String,

    /// Identifier of the entity resolution rule that was triggered.
    #[serde(rename = "XXX_ERRULE_CODE")]
    pub xxxErruleCode: String,

    #[serde(rename = "XXX_IDENTIFIER_DATA")]
    pub xxxIdentifierData: Vec<String>,

    /// Internal identifier for the record.
    #[serde(rename = "XXX_INTERNAL_ID")]
    pub xxxInternalId: i32,

    /// Representation of matched source record features.
    #[serde(rename = "XXX_MATCH_KEY")]
    pub xxxMatchKey: String,

    #[serde(rename = "XXX_MATCH_LEVEL")]
    pub xxxMatchLevel: i32,

    /// The type of match that occurred for the record.
    #[serde(rename = "XXX_MATCH_LEVEL_CODE")]
    pub xxxMatchLevelCode: String,

    #[serde(rename = "XXX_NAME_DATA")]
    pub xxxNameData: Vec<String>,

    #[serde(rename = "XXX_OTHER_DATA")]
    pub xxxOtherData: Vec<String>,

    #[serde(rename = "XXX_PHONE_DATA")]
    pub xxxPhoneData: Vec<String>,

    #[serde(rename = "XXX_RELATIONSHIP_DATA")]
    pub xxxRelationshipData: Vec<String>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetRedoRecordResponse {
    #[serde(rename = "UMF_PROC")]
    pub umfProc: UmfProc,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetStatsResponse {
    #[serde(rename = "workload")]
    pub workload: Workload,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetVirtualEntityByRecordIdRecordKeys {
    /// A list of (data source code, record id) pairs.
    #[serde(rename = "RECORDS")]
    pub records: Vec<RecordKey>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineGetVirtualEntityByRecordIdResponse {
    #[serde(rename = "RESOLVED_ENTITY")]
    pub resolvedEntity: ResolvedEntity,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineHowEntityByEntityIdResponse {
    #[serde(rename = "HOW_RESULTS")]
    pub howResults: HowResults,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineProcessRedoRecordResponse {
    #[serde(rename = "AFFECTED_ENTITIES")]
    pub affectedEntities: Vec<AffectedEntity>,

    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "UMF_PROC")]
    pub umfProc: UmfProc,

    #[serde(rename = "XXX_INTERESTING_ENTITIES")]
    pub xxxInterestingEntities: InterestingEntities,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineReevaluateEntityResponse {
    #[serde(rename = "AFFECTED_ENTITIES")]
    pub affectedEntities: Vec<AffectedEntity>,

    #[serde(rename = "INTERESTING_ENTITIES")]
    pub interestingEntities: InterestingEntities,

    /// A label identifying the provenance of the record.
    #[serde(rename = "XXX_DATA_SOURCE")]
    pub xxxDataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "XXX_RECORD_ID")]
    pub xxxRecordId: String,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineReevaluateRecordResponse {
    #[serde(rename = "AFFECTED_ENTITIES")]
    pub affectedEntities: Vec<AffectedEntity>,

    /// A label identifying the provenance of the record.
    #[serde(rename = "DATA_SOURCE")]
    pub dataSource: String,

    /// The unique identifier within the set of records in the DATA_SOURCE.
    #[serde(rename = "RECORD_ID")]
    pub recordId: String,

    #[serde(rename = "XXX_INTERESTING_ENTITIES")]
    pub xxxInterestingEntities: InterestingEntities,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineSearchByAttributesAttributes {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineSearchByAttributesResponse {
    #[serde(rename = "RELATED_ENTITIES_MJD")]
    pub relatedEntitiesMjd: Vec<RelatedEntity>,

    #[serde(rename = "RESOLVED_ENTITIES")]
    pub resolvedEntities: Vec<ResolvedEntityAndMatchInfo>,

    #[serde(rename = "SEARCH_ENTITY")]
    pub searchEntity: SearchEntity,

    #[serde(rename = "SEARCH_REQUEST")]
    pub searchRequest: SearchRequest,

    #[serde(rename = "SEARCH_STATISTICS")]
    pub searchStatistics: Vec<SearchStatistic>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineSearchByAttributesSearchProfile {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineStreamExportJsonEntityReportResponse {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhyEntitiesResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhyRecordInEntityResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhyRecordsResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<Entity>,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhySearchAttributes {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhySearchResponse {
    #[serde(rename = "ENTITIES")]
    pub entities: Vec<EntityForWhySearch>,

    #[serde(rename = "SEARCH_ENTITY")]
    pub searchEntity: SearchEntity,

    #[serde(rename = "SEARCH_REQUEST")]
    pub searchRequest: SearchRequest,

    #[serde(rename = "SEARCH_STATISTICS")]
    pub searchStatistics: Vec<SearchStatistic>,

    #[serde(rename = "WHY_RESULTS")]
    pub whyResults: Vec<WhyResult>,
}

#[derive(Serialize, Deserialize)]
pub struct SzEngineWhySearchSearchProfile {
    #[serde(rename = "XXX_FIXME")]
    pub xxxFixme: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct SzProductGetLicenseResponse {
    #[serde(rename = "advSearch")]
    pub advSearch: i32,

    #[serde(rename = "billing")]
    pub billing: String,

    #[serde(rename = "contract")]
    pub contract: String,

    #[serde(rename = "customer")]
    pub customer: String,

    #[serde(rename = "expireDate")]
    pub expireDate: String,

    #[serde(rename = "issueDate")]
    pub issueDate: String,

    #[serde(rename = "licenseLevel")]
    pub licenseLevel: String,

    #[serde(rename = "licenseType")]
    pub licenseType: String,

    #[serde(rename = "recordLimit")]
    pub recordLimit: i32,
}

#[derive(Serialize, Deserialize)]
pub struct SzProductGetVersionResponse {
    #[serde(rename = "BUILD_DATE")]
    pub buildDate: String,

    #[serde(rename = "BUILD_NUMBER")]
    pub buildNumber: String,

    #[serde(rename = "BUILD_VERSION")]
    pub buildVersion: String,

    #[serde(rename = "COMPATIBILITY_VERSION")]
    pub compatibilityVersion: CompatibilityVersion,

    #[serde(rename = "PRODUCT_NAME")]
    pub productName: String,

    #[serde(rename = "SCHEMA_VERSION")]
    pub schemaVersion: SchemaVersion,

    #[serde(rename = "VERSION")]
    pub version: String,
}

#[derive(Serialize, Deserialize)]
pub struct UmfProc {
    #[serde(rename = "NAME")]
    pub name: String,

    #[serde(rename = "PARAMS")]
    pub params: Vec<UmfProcParams>,
}

#[derive(Serialize, Deserialize)]
pub struct UmfProcParamDetails {
    #[serde(rename = "NAME")]
    pub name: String,

    #[serde(rename = "VALUE")]
    pub value: Object,
}

#[derive(Serialize, Deserialize)]
pub struct UmfProcParams {
    #[serde(rename = "PARAM")]
    pub param: UmfProcParamDetails,
}

#[derive(Serialize, Deserialize)]
pub struct VirtualEntitySynopsis {
    #[serde(rename = "MEMBER_RECORDS")]
    pub memberRecords: Vec<MemberRecord>,

    #[serde(rename = "VIRTUAL_ENTITY_ID")]
    pub virtualEntityId: String,
}

#[derive(Serialize, Deserialize)]
pub struct WhyKeyDetails {
    #[serde(rename = "CONFIRMATIONS")]
    pub confirmations: Vec<Confirmation>,

    #[serde(rename = "DENIALS")]
    pub denials: Vec<Confirmation>,

    #[serde(rename = "DISCLOSED_RELATIONS")]
    pub disclosedRelations: Vec<DisclosedRelationsForWhyKeyDetails>,
}

#[derive(Serialize, Deserialize)]
pub struct WhyResult {
    /// The ENTITY_ID is the Senzing-generated identifier for the discovered
    /// entity. It may change when new information is added.
    #[serde(rename = "ENTITY_ID")]
    pub entityId: i32,

    #[serde(rename = "ENTITY_ID_2")]
    pub entityId0: i32,

    #[serde(rename = "FOCUS_RECORDS")]
    pub focusRecords: Vec<FocusRecord>,

    #[serde(rename = "FOCUS_RECORDS_2")]
    pub focusRecords0: Vec<FocusRecord>,

    /// Internal identifier for the record.
    #[serde(rename = "INTERNAL_ID")]
    pub internalId: i32,

    /// Internal identifier for the record.
    #[serde(rename = "INTERNAL_ID_2")]
    pub internalId0: i32,

    #[serde(rename = "MATCH_INFO")]
    pub matchInfo: MatchInfoForWhy,
}

#[derive(Serialize, Deserialize)]
pub struct Workload {
    #[serde(rename = "apiVersion")]
    pub apiVersion: String,

    #[serde(rename = "caches")]
    pub caches: WorkloadCaches,

    #[serde(rename = "candidates")]
    pub candidates: WorkloadCandidates,

    #[serde(rename = "contention")]
    pub contention: WorkloadContention,

    #[serde(rename = "datetimestamp")]
    pub datetimestamp: String,

    #[serde(rename = "expressedFeatures")]
    pub expressedFeatures: WorkloadExpressedFeatures,

    #[serde(rename = "genericDetect")]
    pub genericDetect: Fixme,

    #[serde(rename = "license")]
    pub license: WorkloadLicense,

    #[serde(rename = "loadedRecords")]
    pub loadedRecords: i32,

    #[serde(rename = "lockWaits")]
    pub lockWaits: WorkloadLockWaits,

    #[serde(rename = "processing")]
    pub processing: WorkloadProcessing,

    #[serde(rename = "redoTriggers")]
    pub redoTriggers: HashMap<String, i32>,

    #[serde(rename = "repairDiagnosis")]
    pub repairDiagnosis: WorkloadRepairDiagnosis,

    #[serde(rename = "reresolve")]
    pub reresolve: WorkloadReresolve,

    #[serde(rename = "scoring")]
    pub scoring: WorkloadScoring,

    #[serde(rename = "systemResources")]
    pub systemResources: WorkloadSystemResources,

    #[serde(rename = "threadState")]
    pub threadState: WorkloadThreadState,

    #[serde(rename = "unresolve")]
    pub unresolve: WorkloadUnresolve,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadCaches {
    #[serde(rename = "libFeatCacheHit")]
    pub libFeatCacheHit: i32,

    #[serde(rename = "libFeatCacheMiss")]
    pub libFeatCacheMiss: i32,

    #[serde(rename = "libFeatInsert")]
    pub libFeatInsert: i32,

    #[serde(rename = "resFeatStatCacheHit")]
    pub resFeatStatCacheHit: i32,

    #[serde(rename = "resFeatStatCacheMiss")]
    pub resFeatStatCacheMiss: i32,

    #[serde(rename = "resFeatStatInsert")]
    pub resFeatStatInsert: i32,

    #[serde(rename = "resFeatStatUpdateAttempt")]
    pub resFeatStatUpdateAttempt: i32,

    #[serde(rename = "resFeatStatUpdateFail")]
    pub resFeatStatUpdateFail: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadCandidates {
    #[serde(rename = "candidateBuilders")]
    pub candidateBuilders: HashMap<String, i32>,

    #[serde(rename = "suppressedCandidateBuilders")]
    pub suppressedCandidateBuilders: HashMap<String, i32>,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadContention {
    #[serde(rename = "feature")]
    pub feature: Fixme,

    #[serde(rename = "resEnt")]
    pub resEnt: Fixme,

    #[serde(rename = "valuelatch")]
    pub valuelatch: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadCurrResources {
    #[serde(rename = "activeThreads")]
    pub activeThreads: i32,

    #[serde(rename = "availableMemory")]
    pub availableMemory: String,

    #[serde(rename = "processMemory")]
    pub processMemory: String,

    #[serde(rename = "workerThreads")]
    pub workerThreads: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadExpressedFeatures {
    #[serde(rename = "calls")]
    pub calls: Vec<WorkloadExpressedFeaturesCall>,

    #[serde(rename = "created")]
    pub created: HashMap<String, i32>,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadExpressedFeaturesCall {
    #[serde(rename = "EFCALL_ID")]
    pub efcallId: i32,

    #[serde(rename = "EFUNC_CODE")]
    pub efuncCode: String,

    #[serde(rename = "numCalls")]
    pub numCalls: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadInitResources {
    #[serde(rename = "XXX_physicalCores")]
    pub xxxPhysicalCores: i32,

    #[serde(rename = "availableMemory")]
    pub availableMemory: String,

    #[serde(rename = "logicalCores")]
    pub logicalCores: i32,

    #[serde(rename = "totalMemory")]
    pub totalMemory: String,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadLicense {
    #[serde(rename = "dsrLimit")]
    pub dsrLimit: String,

    #[serde(rename = "status")]
    pub status: String,

    #[serde(rename = "type")]
    pub type_: String,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadLockWaits {
    #[serde(rename = "refreshLocks")]
    pub refreshLocks: WorkloadRefreshLocks,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadProcessing {
    #[serde(rename = "addedRecords")]
    pub addedRecords: i32,

    #[serde(rename = "ambiguous")]
    pub ambiguous: WorkloadProcessingAmbiguous,

    #[serde(rename = "batchAddedRecords")]
    pub batchAddedRecords: i32,

    #[serde(rename = "deletedRecords")]
    pub deletedRecords: i32,

    #[serde(rename = "details")]
    pub details: WorkloadProcessingDetails,

    #[serde(rename = "reevaluations")]
    pub reevaluations: i32,

    #[serde(rename = "repairedEntities")]
    pub repairedEntities: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadProcessingAmbiguous {
    #[serde(rename = "actualTest")]
    pub actualTest: i32,

    #[serde(rename = "cachedTest")]
    pub cachedTest: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadProcessingDetails {
    #[serde(rename = "addedRecords")]
    pub addedRecords: i32,

    #[serde(rename = "candidates")]
    pub candidates: i32,

    #[serde(rename = "changeDeletes")]
    pub changeDeletes: i32,

    #[serde(rename = "duration")]
    pub duration: i32,

    #[serde(rename = "filteredObsFeat")]
    pub filteredObsFeat: i32,

    #[serde(rename = "newObsEnt")]
    pub newObsEnt: i32,

    #[serde(rename = "obsEntHashDiff")]
    pub obsEntHashDiff: i32,

    #[serde(rename = "obsEntHashSame")]
    pub obsEntHashSame: i32,

    #[serde(rename = "optimizedOut")]
    pub optimizedOut: i32,

    #[serde(rename = "optimizedOutSkipped")]
    pub optimizedOutSkipped: i32,

    #[serde(rename = "partiallyResolved")]
    pub partiallyResolved: i32,

    #[serde(rename = "retries")]
    pub retries: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadRefreshLocks {
    #[serde(rename = "count")]
    pub count: i32,

    #[serde(rename = "maxMS")]
    pub maxMs: i32,

    #[serde(rename = "totalMS")]
    pub totalMs: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadRepairDiagnosis {
    #[serde(rename = "types")]
    pub types: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadReresolve {
    #[serde(rename = "newFeatureFTypes")]
    pub newFeatureFtypes: HashMap<String, i32>,

    #[serde(rename = "suppressedCandidateBuildersForReresolve")]
    pub suppressedCandidateBuildersForReresolve: Fixme,

    #[serde(rename = "suppressedScoredFeatureTypeForReresolve")]
    pub suppressedScoredFeatureTypeForReresolve: Fixme,

    #[serde(rename = "triggers")]
    pub triggers: WorkloadReresolveTriggers,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadReresolveTriggers {
    #[serde(rename = "abortRetry")]
    pub abortRetry: i32,

    #[serde(rename = "multipleResolvableCandidates")]
    pub multipleResolvableCandidates: i32,

    #[serde(rename = "resolveNewFeatures")]
    pub resolveNewFeatures: i32,

    #[serde(rename = "skipped")]
    pub skipped: i32,

    #[serde(rename = "unresolveMovement")]
    pub unresolveMovement: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadScoring {
    #[serde(rename = "cacheHit")]
    pub cacheHit: HashMap<String, i32>,

    #[serde(rename = "cacheMiss")]
    pub cacheMiss: HashMap<String, i32>,

    #[serde(rename = "scoredPairs")]
    pub scoredPairs: HashMap<String, i32>,

    #[serde(rename = "suppressedDisclosedRelationshipDomainCount")]
    pub suppressedDisclosedRelationshipDomainCount: i32,

    #[serde(rename = "suppressedScoredFeatureType")]
    pub suppressedScoredFeatureType: Fixme,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadSystemLoad {
    #[serde(rename = "cpuIdle")]
    pub cpuIdle: String,

    #[serde(rename = "cpuSystem")]
    pub cpuSystem: String,

    #[serde(rename = "cpuUser")]
    pub cpuUser: String,

    #[serde(rename = "cpuWait")]
    pub cpuWait: String,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadSystemResources {
    #[serde(rename = "currResources")]
    pub currResources: WorkloadCurrResources,

    #[serde(rename = "initResources")]
    pub initResources: WorkloadInitResources,

    #[serde(rename = "systemLoad")]
    pub systemLoad: WorkloadSystemLoad,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadThreadState {
    #[serde(rename = "active")]
    pub active: i32,

    #[serde(rename = "dataLatchContention")]
    pub dataLatchContention: i32,

    #[serde(rename = "governorContention")]
    pub governorContention: i32,

    #[serde(rename = "idle")]
    pub idle: i32,

    #[serde(rename = "loader")]
    pub loader: i32,

    #[serde(rename = "obsEntContention")]
    pub obsEntContention: i32,

    #[serde(rename = "resEntContention")]
    pub resEntContention: i32,

    #[serde(rename = "resolver")]
    pub resolver: i32,

    #[serde(rename = "scoring")]
    pub scoring: i32,

    #[serde(rename = "sqlExecuting")]
    pub sqlExecuting: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadUnresolve {
    #[serde(rename = "abortedUnresolve")]
    pub abortedUnresolve: i32,

    #[serde(rename = "triggers")]
    pub triggers: WorkloadUnresolveTriggers,

    #[serde(rename = "unresolveTest")]
    pub unresolveTest: i32,
}

#[derive(Serialize, Deserialize)]
pub struct WorkloadUnresolveTriggers {
    #[serde(rename = "ambiguousMultiResolve")]
    pub ambiguousMultiResolve: i32,

    #[serde(rename = "ambiguousNoResolve")]
    pub ambiguousNoResolve: i32,

    #[serde(rename = "extensiveResolve")]
    pub extensiveResolve: i32,

    #[serde(rename = "normalResolve")]
    pub normalResolve: i32,

    #[serde(rename = "relLink")]
    pub relLink: i32,

    #[serde(rename = "update")]
    pub update: i32,
}
