// Code generated by jtd-codegen for C# + System.Text.Json v0.2.1
#pragma warning disable CS8601, CS8618

using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace Senzing.Typedef
{
    public class ResolvedEntity
    {
        /// <summary>
        /// The ENTITY_ID is the Senzing-generated identifier for the discovered
        /// entity. It may change when new information is added.
        /// </summary>
        [JsonPropertyName("ENTITY_ID")]
        public int EntityId { get; set; }

        /// <summary>
        /// A name this entity goes by. An entity could have multiple names.
        /// </summary>
        [JsonPropertyName("ENTITY_NAME")]
        public string EntityName { get; set; }

        [JsonPropertyName("FEATURES")]
        public IDictionary<string, IList<FeatureForAttributes>> Features { get; set; }

        [JsonPropertyName("RECORDS")]
        public IList<Record> Records { get; set; }

        /// <summary>
        /// Overview of the source systems the records came from comprising this
        /// related entity.
        /// </summary>
        [JsonPropertyName("RECORD_SUMMARY")]
        public IList<RecordSummary> RecordSummary { get; set; }

        [JsonPropertyName("RECORD_TYPES")]
        public IList<string> RecordTypes { get; set; }

        /// <summary>
        /// Identifier of the entity resolution rule that was triggered.
        /// </summary>
        [JsonPropertyName("XXX_ERRULE_CODE")]
        public string XxxErruleCode { get; set; }

        [JsonPropertyName("XXX_FEATURE_IDS")]
        public IList<FeatureId> XxxFeatureIds { get; set; }

        /// <summary>
        /// Indicates if this is an ambiguous relationship.
        /// </summary>
        [JsonPropertyName("XXX_IS_AMBIGUOUS")]
        public int XxxIsAmbiguous { get; set; }

        /// <summary>
        /// Indicates if this is a disclosed relationship.
        /// </summary>
        [JsonPropertyName("XXX_IS_DISCLOSED")]
        public int XxxIsDisclosed { get; set; }

        [JsonPropertyName("XXX_LAST_SEEN_DT")]
        public DateTimeOffset XxxLastSeenDt { get; set; }

        /// <summary>
        /// Representation of matched source record features.
        /// </summary>
        [JsonPropertyName("XXX_MATCH_KEY")]
        public string XxxMatchKey { get; set; }

        [JsonPropertyName("XXX_MATCH_LEVEL")]
        public int XxxMatchLevel { get; set; }

        /// <summary>
        /// The type of match that occurred for the record.
        /// </summary>
        [JsonPropertyName("XXX_MATCH_LEVEL_CODE")]
        public string XxxMatchLevelCode { get; set; }
    }
}
