/// <summary>
 /// Initializes a new instance of the <see cref="NotificationAllOf" /> class.
 /// </summary>
 /// <param name="id">Notification id will be returned in response and will indicate that the notification was processed successfully. .</param>
 /// <param name="impressionId">Impression id is used to stitch (link) the current notification with a previous notification or execute request. In case they both of them match, the second and other subsequent requests will not generate a new impression to the activity, experience etc. .</param>
 /// <param name="type">type.</param>
 /// <param name="timestamp">Timestamp of the notification, in milliseconds elapsed since UNIX epoch..</param>
 /// <param name="tokens">A list of tokens for displayed content or clicked selectors, based on the type of notification..</param>
 /// <param name="mbox">mbox.</param>
 /// <param name="view">view.</param>
 /// <param name="pageLoad">pageLoad.</param>
 public NotificationAllOf(string id = default(string), string impressionId = default(string), MetricType?type = default(MetricType?), long timestamp = default(long), List <string> tokens = default(List <string>), NotificationMbox mbox = default(NotificationMbox), NotificationView view = default(NotificationView), NotificationPageLoad pageLoad = default(NotificationPageLoad))
 {
     this.Id           = id;
     this.ImpressionId = impressionId;
     this.Type         = type;
     this.Timestamp    = timestamp;
     this.Tokens       = tokens;
     this.Mbox         = mbox;
     this.View         = view;
     this.PageLoad     = pageLoad;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Notification" /> class.
 /// </summary>
 /// <param name="address">address.</param>
 /// <param name="parameters">Parameters map. Same object is reused for mbox or profile parameters with slight validation differences. Following names are not allowed for mbox parameters: &#39;orderId&#39;, &#39;orderTotal&#39;, productPurchasedIds&#39; Validation (for both mbox and profile parameters):   * Max 50 parameters limit.   * Parameter name should not be blank.   * Parameter name max length 128.   * Parameter name should not start with &#39;profile.&#39;   * Parameter value length max 5000. .</param>
 /// <param name="profileParameters">Parameters map. Same object is reused for mbox or profile parameters with slight validation differences. Following names are not allowed for mbox parameters: &#39;orderId&#39;, &#39;orderTotal&#39;, productPurchasedIds&#39; Validation (for both mbox and profile parameters):   * Max 50 parameters limit.   * Parameter name should not be blank.   * Parameter name max length 128.   * Parameter name should not start with &#39;profile.&#39;   * Parameter value length max 5000. .</param>
 /// <param name="order">order.</param>
 /// <param name="product">product.</param>
 /// <param name="id">Notification id will be returned in response and will indicate that the notification was processed successfully.  (required).</param>
 /// <param name="impressionId">Impression id is used to stitch (link) the current notification with a previous notification or execute request. In case they both of them match, the second and other subsequent requests will not generate a new impression to the activity, experience etc. .</param>
 /// <param name="type">type (required).</param>
 /// <param name="timestamp">Timestamp of the notification, in milliseconds elapsed since UNIX epoch. (required).</param>
 /// <param name="tokens">A list of tokens for displayed content or clicked selectors, based on the type of notification..</param>
 /// <param name="mbox">mbox.</param>
 /// <param name="view">view.</param>
 /// <param name="pageLoad">pageLoad.</param>
 public Notification(Address address = default(Address), Dictionary <string, string> parameters = default(Dictionary <string, string>), Dictionary <string, string> profileParameters = default(Dictionary <string, string>), Order order = default(Order), Product product = default(Product), string id = default(string), string impressionId = default(string), MetricType type = default(MetricType), long?timestamp = default(long?), List <string> tokens = default(List <string>), NotificationMbox mbox = default(NotificationMbox), NotificationView view = default(NotificationView), NotificationPageLoad pageLoad = default(NotificationPageLoad))
 {
     // to ensure "id" is required (not null)
     this.Id                = id ?? throw new ArgumentNullException("id is a required property for Notification and cannot be null");
     this.Type              = type;
     this.Timestamp         = timestamp;
     this.Address           = address;
     this.Parameters        = parameters;
     this.ProfileParameters = profileParameters;
     this.Order             = order;
     this.Product           = product;
     this.ImpressionId      = impressionId;
     this.Tokens            = tokens;
     this.Mbox              = mbox;
     this.View              = view;
     this.PageLoad          = pageLoad;
 }