/// <summary>
        /// Initializes a new instance of the <see cref="TransactionQueryParameters" /> class.
        /// </summary>
        /// <param name="startDate">The lower bound effective datetime or cut label (inclusive) from which to build the transactions. (required).</param>
        /// <param name="endDate">The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. (required).</param>
        /// <param name="queryMode">The date to compare against the upper and lower bounds for the effective datetime or cut label. Defaults to &#39;TradeDate&#39; if not specified..</param>
        /// <param name="showCancelledTransactions">Option to specify whether or not to include cancelled transactions in the output. Defaults to False if not specified..</param>
        public TransactionQueryParameters(DateTimeOrCutLabel startDate = default(DateTimeOrCutLabel), DateTimeOrCutLabel endDate = default(DateTimeOrCutLabel), QueryModeEnum?queryMode = default(QueryModeEnum?), bool?showCancelledTransactions = default(bool?))
        {
            // to ensure "startDate" is required (not null)
            if (startDate == null)
            {
                throw new InvalidDataException("startDate is a required property for TransactionQueryParameters and cannot be null");
            }
            else
            {
                this.StartDate = startDate;
            }

            // to ensure "endDate" is required (not null)
            if (endDate == null)
            {
                throw new InvalidDataException("endDate is a required property for TransactionQueryParameters and cannot be null");
            }
            else
            {
                this.EndDate = endDate;
            }

            this.QueryMode = queryMode;
            this.ShowCancelledTransactions = showCancelledTransactions;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TransactionQueryParameters" /> class.
 /// </summary>
 /// <param name="startDate">The lower bound effective datetime or cut label (inclusive) from which to build the transactions. (required).</param>
 /// <param name="endDate">The upper bound effective datetime or cut label (inclusive) from which to retrieve transactions. (required).</param>
 /// <param name="queryMode">The date to compare against the upper and lower bounds for the effective datetime or cut label. Defaults to &#39;TradeDate&#39; if not specified. The available values are: TradeDate, SettleDate.</param>
 /// <param name="showCancelledTransactions">Option to specify whether or not to include cancelled transactions in the output. Defaults to False if not specified..</param>
 public TransactionQueryParameters(DateTimeOrCutLabel startDate = default(DateTimeOrCutLabel), DateTimeOrCutLabel endDate = default(DateTimeOrCutLabel), QueryModeEnum?queryMode = default(QueryModeEnum?), bool showCancelledTransactions = default(bool))
 {
     // to ensure "startDate" is required (not null)
     this.StartDate = startDate ?? throw new ArgumentNullException("startDate is a required property for TransactionQueryParameters and cannot be null");
     // to ensure "endDate" is required (not null)
     this.EndDate   = endDate ?? throw new ArgumentNullException("endDate is a required property for TransactionQueryParameters and cannot be null");
     this.QueryMode = queryMode;
     this.ShowCancelledTransactions = showCancelledTransactions;
 }