/// <summary>
 /// Initializes a new instance of the <see cref="ShareholderContact" /> class.
 /// </summary>
 /// <param name="address">address.</param>
 /// <param name="email">The e-mail address of the contact..</param>
 /// <param name="fullPhoneNumber">The phone number of the contact provided as a single string.  It will be handled as a landline phone. **Examples:** \&quot;0031 6 11 22 33 44\&quot;, \&quot;+316/1122-3344\&quot;, \&quot;(0031) 611223344\&quot;.</param>
 /// <param name="name">name.</param>
 /// <param name="personalData">personalData.</param>
 /// <param name="phoneNumber">phoneNumber.</param>
 /// <param name="shareholderCode">The unique identifier (UUID) of the Shareholder. &gt;**If, during an Account Holder create or update request, this field is left blank (but other fields provided), a new Shareholder will be created with a procedurally-generated UUID.**  &gt;**If, during an Account Holder create request, a UUID is provided, the creation of the Shareholder will fail while the creation of the Account Holder will continue.**  &gt;**If, during an Account Holder update request, a UUID that is not correlated with an existing Shareholder is provided, the update of the Shareholder will fail.**  &gt;**If, during an Account Holder update request, a UUID that is correlated with an existing Shareholder is provided, the existing Shareholder will be updated.** .</param>
 /// <param name="shareholderReference">Merchant reference to the Shareholder..</param>
 /// <param name="webAddress">The URL of the website of the contact..</param>
 public ShareholderContact(ViasAddress address = default(ViasAddress), string email = default(string), string fullPhoneNumber = default(string), ViasName name = default(ViasName), ViasPersonalData personalData = default(ViasPersonalData), ViasPhoneNumber phoneNumber = default(ViasPhoneNumber), string shareholderCode = default(string), string shareholderReference = default(string), string webAddress = default(string))
 {
     this.Address              = address;
     this.Email                = email;
     this.FullPhoneNumber      = fullPhoneNumber;
     this.Name                 = name;
     this.PersonalData         = personalData;
     this.PhoneNumber          = phoneNumber;
     this.ShareholderCode      = shareholderCode;
     this.ShareholderReference = shareholderReference;
     this.WebAddress           = webAddress;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="AccountHolderDetails" /> class.
 /// </summary>
 /// <param name="address">address.</param>
 /// <param name="bankAccountDetails">Each of the bank accounts associated with the account holder. &gt; Each array entry should represent one bank account. &gt; For comprehensive detail regarding the required &#x60;BankAccountDetail&#x60; fields, please refer to the [KYC Verification documentation](https://docs.adyen.com/marketpay/onboarding-and-verification/verification-checks)..</param>
 /// <param name="businessDetails">businessDetails.</param>
 /// <param name="email">The email address of the account holder. (required).</param>
 /// <param name="fullPhoneNumber">The phone number of the account holder provided as a single string. It will be handled as a landline phone. **Examples:** \&quot;0031 6 11 22 33 44\&quot;, \&quot;+316/1122-3344\&quot;, \&quot;(0031) 611223344\&quot; (required).</param>
 /// <param name="individualDetails">individualDetails.</param>
 /// <param name="merchantCategoryCode">The Merchant Category Code of the account holder. &gt; If not specified in the request, this will be derived from the platform account (which is configured by Adyen)..</param>
 /// <param name="metadata">A set of key and value pairs for general use by the account holder or merchant. The keys do not have specific names and may be used for storing miscellaneous data as desired. &gt; The values being stored have a maximum length of eighty (80) characters and will be truncated if necessary. &gt; Note that during an update of metadata, the omission of existing key-value pairs will result in the deletion of those key-value pairs..</param>
 /// <param name="payoutMethods">Each of the card tokens associated with the account holder. &gt; Each array entry should represent one card token. &gt; For comprehensive detail regarding the required &#x60;CardToken&#x60; fields, please refer to the [KYC Verification documentation](https://docs.adyen.com/marketpay/onboarding-and-verification/verification-checks)..</param>
 /// <param name="webAddress">The URL of the website of the account holder. (required).</param>
 public AccountHolderDetails(ViasAddress address = default(ViasAddress), List <BankAccountDetail> bankAccountDetails = default(List <BankAccountDetail>), BusinessDetails businessDetails = default(BusinessDetails), string email = default(string), string fullPhoneNumber = default(string), IndividualDetails individualDetails = default(IndividualDetails), string merchantCategoryCode = default(string), Object metadata = default(Object), List <PayoutMethod> payoutMethods = default(List <PayoutMethod>), string webAddress = default(string))
 {
     // to ensure "email" is required (not null)
     if (email == null)
     {
         throw new InvalidDataException("email is a required property for AccountHolderDetails and cannot be null");
     }
     else
     {
         this.Email = email;
     }
     this.WebAddress           = webAddress;
     this.FullPhoneNumber      = fullPhoneNumber;
     this.Address              = address;
     this.BankAccountDetails   = bankAccountDetails;
     this.BusinessDetails      = businessDetails;
     this.IndividualDetails    = individualDetails;
     this.MerchantCategoryCode = merchantCategoryCode;
     this.Metadata             = metadata;
     this.PayoutMethods        = payoutMethods;
 }