using Newtonsoft.Json.Schema;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics.CodeAnalysis;
using System.Text.Json.Serialization;
public static void Main()
var jsonSchemaGenerator = new JsonSchemaGenerator();
var myType = typeof(Event);
var schema = jsonSchemaGenerator.Generate(myType);
schema.Title = myType.Name;
Console.WriteLine(schema);
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string WorkflowName { get; set; }
[Obsolete("WorkflowRulesToInject is deprecated. Use WorkflowsToInject instead.")]
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<string> WorkflowRulesToInject
get { return WorkflowsToInject; }
set { WorkflowsToInject = value; }
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<string> WorkflowsToInject { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<ScopedParam> GlobalParams { get; set; }
public IEnumerable<Rule> Rules { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public string Expression { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string RuleName { get; set; }
public Dictionary<string, object> Properties { get; set; }
public string Operator { get; set; }
public string ErrorMessage { get; set; }
public bool Enabled { get; set; }
public string ErrorType { get; set; }
public string RuleExpressionType { get; set; }
[Obsolete("WorkflowRulesToInject is deprecated. Use WorkflowsToInject instead.")]
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<string> WorkflowRulesToInject
get { return WorkflowsToInject; }
set { WorkflowsToInject = value; }
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<string> WorkflowsToInject { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public IEnumerable<ScopedParam> LocalParams { get; set; }
public string Expression { get; set; }
[Column(TypeName = "jsonb")]
public RuleActions Actions { get; set; }
[JsonIgnore(Condition = JsonIgnoreCondition.Always)]
public string SuccessEvent { get; set; }
public ActionInfo OnSuccess { get; set; }
public ActionInfo OnFailure { get; set; }
public string Name { get; set; }
public Dictionary<string, object> Context { get; set; }
public class TierInfoData
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long MembershipTierSystemId { get; set; }
public string MembershipTierKey { get; set; }
public string MembershipTierName { get; set; }
public string MembershipTierDescription { get; set; }
[Range(0, double.PositiveInfinity, ErrorMessage = "TierLevelValidaValue")]
public int TierLevel { get; set; }
public bool IsDefaultTier { get; set; }
[Column(TypeName = "jsonb")]
public JsonDocument Properties { get; set; }
public List<Workflow> RuleData { get; set; }
public TierMasterRuleData TierMasterRuleData { get; set; }
public Decimal EarnRate { get; set; }
public class TierMasterRuleData
public TierMasterWhoRuleData TierMasterWhoRule { get;set; }
public List< TierMasterRewardRuleData> TierMasterRewardRuleData { get;set; }
public class TierMasterWhoRuleData
[Range(0, 10000000000, ErrorMessage = "From Value must be less than 10000000000.")]
public long FromValue { get; set; }
[Range(0, 10000000000, ErrorMessage = "To Value must be less than 10000000000.")]
public long ToValue { get; set; }
public class TierMasterRewardRuleData
public string RewardName { get; set; }
public string RewardCode { get; set; }
public List<TierInfoData> TierList { get; set; }