/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
 */

'use strict';

/**
 * The integration account agreement content.
 *
 */
class AgreementContent {
  /**
   * Create a AgreementContent.
   * @property {object} [aS2] The AS2 agreement content.
   * @property {object} [aS2.receiveAgreement] The AS2 one-way receive
   * agreement.
   * @property {object} [aS2.receiveAgreement.senderBusinessIdentity] The
   * sender business identity
   * @property {string} [aS2.receiveAgreement.senderBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [aS2.receiveAgreement.senderBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [aS2.receiveAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string}
   * [aS2.receiveAgreement.receiverBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [aS2.receiveAgreement.receiverBusinessIdentity.value]
   * The user defined business identity value.
   * @property {object} [aS2.receiveAgreement.protocolSettings] The AS2
   * protocol settings.
   * @property {object}
   * [aS2.receiveAgreement.protocolSettings.messageConnectionSettings] The
   * message connection settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.messageConnectionSettings.ignoreCertificateNameMismatch]
   * The value indicating whether to ignore mismatch in certificate name.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.messageConnectionSettings.supportHttpStatusCodeContinue]
   * The value indicating whether to support HTTP status code 'CONTINUE'.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.messageConnectionSettings.keepHttpConnectionAlive]
   * The value indicating whether to keep the connection alive.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.messageConnectionSettings.unfoldHttpHeaders]
   * The value indicating whether to unfold the HTTP headers.
   * @property {object}
   * [aS2.receiveAgreement.protocolSettings.acknowledgementConnectionSettings]
   * The acknowledgement connection settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.acknowledgementConnectionSettings.ignoreCertificateNameMismatch]
   * The value indicating whether to ignore mismatch in certificate name.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.acknowledgementConnectionSettings.supportHttpStatusCodeContinue]
   * The value indicating whether to support HTTP status code 'CONTINUE'.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.acknowledgementConnectionSettings.keepHttpConnectionAlive]
   * The value indicating whether to keep the connection alive.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.acknowledgementConnectionSettings.unfoldHttpHeaders]
   * The value indicating whether to unfold the HTTP headers.
   * @property {object} [aS2.receiveAgreement.protocolSettings.mdnSettings] The
   * MDN settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.needMDN] The value
   * indicating whether to send or request a MDN.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.signMDN] The value
   * indicating whether the MDN needs to be signed or not.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.sendMDNAsynchronously]
   * The value indicating whether to send the asynchronous MDN.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.receiptDeliveryUrl] The
   * receipt delivery URL.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.dispositionNotificationTo]
   * The disposition notification to header value.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.signOutboundMDNIfOptional]
   * The value indicating whether to sign the outbound MDN if optional.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.mdnText] The MDN text.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.sendInboundMDNToMessageBox]
   * The value indicating whether to send inbound MDN to message box.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.mdnSettings.micHashingAlgorithm]
   * The signing or hashing algorithm. Possible values include: 'NotSpecified',
   * 'None', 'MD5', 'SHA1', 'SHA2256', 'SHA2384', 'SHA2512'
   * @property {object}
   * [aS2.receiveAgreement.protocolSettings.securitySettings] The security
   * settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.overrideGroupSigningCertificate]
   * The value indicating whether to send or request a MDN.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.signingCertificateName]
   * The name of the signing certificate.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.encryptionCertificateName]
   * The name of the encryption certificate.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForInboundEncodedMessages]
   * The value indicating whether to enable NRR for inbound encoded messages.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForInboundDecodedMessages]
   * The value indicating whether to enable NRR for inbound decoded messages.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForOutboundMDN]
   * The value indicating whether to enable NRR for outbound MDN.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForOutboundEncodedMessages]
   * The value indicating whether to enable NRR for outbound encoded messages.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForOutboundDecodedMessages]
   * The value indicating whether to enable NRR for outbound decoded messages.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.enableNRRForInboundMDN]
   * The value indicating whether to enable NRR for inbound MDN.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.securitySettings.sha2AlgorithmFormat]
   * The Sha2 algorithm format. Valid values are Sha2, ShaHashSize,
   * ShaHyphenHashSize, Sha2UnderscoreHashSize.
   * @property {object}
   * [aS2.receiveAgreement.protocolSettings.validationSettings] The validation
   * settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.overrideMessageProperties]
   * The value indicating whether to override incoming message properties with
   * those in agreement.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.encryptMessage]
   * The value indicating whether the message has to be encrypted.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.signMessage] The
   * value indicating whether the message has to be signed.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.compressMessage]
   * The value indicating whether the message has to be compressed.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.checkDuplicateMessage]
   * The value indicating whether to check for duplicate message.
   * @property {number}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.interchangeDuplicatesValidityDays]
   * The number of days to look back for duplicate interchange.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.checkCertificateRevocationListOnSend]
   * The value indicating whether to check for certificate revocation list on
   * send.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.checkCertificateRevocationListOnReceive]
   * The value indicating whether to check for certificate revocation list on
   * receive.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.encryptionAlgorithm]
   * The encryption algorithm. Possible values include: 'NotSpecified', 'None',
   * 'DES3', 'RC2', 'AES128', 'AES192', 'AES256'
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.validationSettings.signingAlgorithm]
   * The signing algorithm. Possible values include: 'NotSpecified', 'Default',
   * 'SHA1', 'SHA2256', 'SHA2384', 'SHA2512'
   * @property {object}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings] The envelope
   * settings.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings.messageContentType]
   * The message content type.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings.transmitFileNameInMimeHeader]
   * The value indicating whether to transmit file name in mime header.
   * @property {string}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings.fileNameTemplate]
   * The template for file name.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings.suspendMessageOnFileNameGenerationError]
   * The value indicating whether to suspend message on file name generation
   * error.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.envelopeSettings.autogenerateFileName]
   * The value indicating whether to auto generate file name.
   * @property {object} [aS2.receiveAgreement.protocolSettings.errorSettings]
   * The error settings.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.errorSettings.suspendDuplicateMessage]
   * The value indicating whether to suspend duplicate message.
   * @property {boolean}
   * [aS2.receiveAgreement.protocolSettings.errorSettings.resendIfMDNNotReceived]
   * The value indicating whether to resend message If MDN is not received.
   * @property {object} [aS2.sendAgreement] The AS2 one-way send agreement.
   * @property {object} [aS2.sendAgreement.senderBusinessIdentity] The sender
   * business identity
   * @property {string} [aS2.sendAgreement.senderBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [aS2.sendAgreement.senderBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [aS2.sendAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string} [aS2.sendAgreement.receiverBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [aS2.sendAgreement.receiverBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [aS2.sendAgreement.protocolSettings] The AS2 protocol
   * settings.
   * @property {object}
   * [aS2.sendAgreement.protocolSettings.messageConnectionSettings] The message
   * connection settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.messageConnectionSettings.ignoreCertificateNameMismatch]
   * The value indicating whether to ignore mismatch in certificate name.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.messageConnectionSettings.supportHttpStatusCodeContinue]
   * The value indicating whether to support HTTP status code 'CONTINUE'.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.messageConnectionSettings.keepHttpConnectionAlive]
   * The value indicating whether to keep the connection alive.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.messageConnectionSettings.unfoldHttpHeaders]
   * The value indicating whether to unfold the HTTP headers.
   * @property {object}
   * [aS2.sendAgreement.protocolSettings.acknowledgementConnectionSettings] The
   * acknowledgement connection settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.acknowledgementConnectionSettings.ignoreCertificateNameMismatch]
   * The value indicating whether to ignore mismatch in certificate name.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.acknowledgementConnectionSettings.supportHttpStatusCodeContinue]
   * The value indicating whether to support HTTP status code 'CONTINUE'.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.acknowledgementConnectionSettings.keepHttpConnectionAlive]
   * The value indicating whether to keep the connection alive.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.acknowledgementConnectionSettings.unfoldHttpHeaders]
   * The value indicating whether to unfold the HTTP headers.
   * @property {object} [aS2.sendAgreement.protocolSettings.mdnSettings] The
   * MDN settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.needMDN] The value
   * indicating whether to send or request a MDN.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.signMDN] The value
   * indicating whether the MDN needs to be signed or not.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.sendMDNAsynchronously] The
   * value indicating whether to send the asynchronous MDN.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.receiptDeliveryUrl] The
   * receipt delivery URL.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.dispositionNotificationTo]
   * The disposition notification to header value.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.signOutboundMDNIfOptional]
   * The value indicating whether to sign the outbound MDN if optional.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.mdnText] The MDN text.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.sendInboundMDNToMessageBox]
   * The value indicating whether to send inbound MDN to message box.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.mdnSettings.micHashingAlgorithm] The
   * signing or hashing algorithm. Possible values include: 'NotSpecified',
   * 'None', 'MD5', 'SHA1', 'SHA2256', 'SHA2384', 'SHA2512'
   * @property {object} [aS2.sendAgreement.protocolSettings.securitySettings]
   * The security settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.overrideGroupSigningCertificate]
   * The value indicating whether to send or request a MDN.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.securitySettings.signingCertificateName]
   * The name of the signing certificate.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.securitySettings.encryptionCertificateName]
   * The name of the encryption certificate.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForInboundEncodedMessages]
   * The value indicating whether to enable NRR for inbound encoded messages.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForInboundDecodedMessages]
   * The value indicating whether to enable NRR for inbound decoded messages.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForOutboundMDN]
   * The value indicating whether to enable NRR for outbound MDN.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForOutboundEncodedMessages]
   * The value indicating whether to enable NRR for outbound encoded messages.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForOutboundDecodedMessages]
   * The value indicating whether to enable NRR for outbound decoded messages.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.securitySettings.enableNRRForInboundMDN]
   * The value indicating whether to enable NRR for inbound MDN.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.securitySettings.sha2AlgorithmFormat]
   * The Sha2 algorithm format. Valid values are Sha2, ShaHashSize,
   * ShaHyphenHashSize, Sha2UnderscoreHashSize.
   * @property {object} [aS2.sendAgreement.protocolSettings.validationSettings]
   * The validation settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.overrideMessageProperties]
   * The value indicating whether to override incoming message properties with
   * those in agreement.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.encryptMessage] The
   * value indicating whether the message has to be encrypted.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.signMessage] The
   * value indicating whether the message has to be signed.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.compressMessage]
   * The value indicating whether the message has to be compressed.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.checkDuplicateMessage]
   * The value indicating whether to check for duplicate message.
   * @property {number}
   * [aS2.sendAgreement.protocolSettings.validationSettings.interchangeDuplicatesValidityDays]
   * The number of days to look back for duplicate interchange.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.checkCertificateRevocationListOnSend]
   * The value indicating whether to check for certificate revocation list on
   * send.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.validationSettings.checkCertificateRevocationListOnReceive]
   * The value indicating whether to check for certificate revocation list on
   * receive.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.validationSettings.encryptionAlgorithm]
   * The encryption algorithm. Possible values include: 'NotSpecified', 'None',
   * 'DES3', 'RC2', 'AES128', 'AES192', 'AES256'
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.validationSettings.signingAlgorithm]
   * The signing algorithm. Possible values include: 'NotSpecified', 'Default',
   * 'SHA1', 'SHA2256', 'SHA2384', 'SHA2512'
   * @property {object} [aS2.sendAgreement.protocolSettings.envelopeSettings]
   * The envelope settings.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.envelopeSettings.messageContentType]
   * The message content type.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.envelopeSettings.transmitFileNameInMimeHeader]
   * The value indicating whether to transmit file name in mime header.
   * @property {string}
   * [aS2.sendAgreement.protocolSettings.envelopeSettings.fileNameTemplate] The
   * template for file name.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.envelopeSettings.suspendMessageOnFileNameGenerationError]
   * The value indicating whether to suspend message on file name generation
   * error.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.envelopeSettings.autogenerateFileName]
   * The value indicating whether to auto generate file name.
   * @property {object} [aS2.sendAgreement.protocolSettings.errorSettings] The
   * error settings.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.errorSettings.suspendDuplicateMessage]
   * The value indicating whether to suspend duplicate message.
   * @property {boolean}
   * [aS2.sendAgreement.protocolSettings.errorSettings.resendIfMDNNotReceived]
   * The value indicating whether to resend message If MDN is not received.
   * @property {object} [x12] The X12 agreement content.
   * @property {object} [x12.receiveAgreement] The X12 one-way receive
   * agreement.
   * @property {object} [x12.receiveAgreement.senderBusinessIdentity] The
   * sender business identity
   * @property {string} [x12.receiveAgreement.senderBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [x12.receiveAgreement.senderBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [x12.receiveAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string}
   * [x12.receiveAgreement.receiverBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [x12.receiveAgreement.receiverBusinessIdentity.value]
   * The user defined business identity value.
   * @property {object} [x12.receiveAgreement.protocolSettings] The X12
   * protocol settings.
   * @property {object}
   * [x12.receiveAgreement.protocolSettings.validationSettings] The X12
   * validation settings.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.validateEDITypes]
   * The value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.validateXSDTypes]
   * The value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object} [x12.receiveAgreement.protocolSettings.framingSettings]
   * The X12 framing settings.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.framingSettings.dataElementSeparator]
   * The data element separator.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.framingSettings.componentSeparator]
   * The component separator.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.framingSettings.replaceSeparatorsInPayload]
   * The value indicating whether to replace separators in payload.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.framingSettings.replaceCharacter]
   * The replacement character.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.framingSettings.segmentTerminator]
   * The segment terminator.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.framingSettings.characterSet] The
   * X12 character set. Possible values include: 'NotSpecified', 'Basic',
   * 'Extended', 'UTF8'
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The segment terminator suffix. Possible values include: 'NotSpecified',
   * 'None', 'CR', 'LF', 'CRLF'
   * @property {object}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings] The X12 envelope
   * settings.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.controlStandardsId]
   * The controls standards id.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.useControlStandardsIdAsRepetitionCharacter]
   * The value indicating whether to use control standards id as repetition
   * character.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.senderApplicationId]
   * The sender application id.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.receiverApplicationId]
   * The receiver application id.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.controlVersionNumber]
   * The control version number.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange  control number lower bound.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange  control number upper bound.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.functionalGroupId]
   * The functional group id.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupHeaderAgencyCode]
   * The group header agency code.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupHeaderVersion]
   * The group header version.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupHeaderDateFormat]
   * The group header date format. Possible values include: 'NotSpecified',
   * 'CCYYMMDD', 'YYMMDD'
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.groupHeaderTimeFormat]
   * The group header time format. Possible values include: 'NotSpecified',
   * 'HHMM', 'HHMMSS', 'HHMMSSdd', 'HHMMSSd'
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.envelopeSettings.usageIndicator]
   * The usage indicator. Possible values include: 'NotSpecified', 'Test',
   * 'Information', 'Production'
   * @property {object}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings] The X12
   * acknowledgment settings.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.functionalAcknowledgementVersion]
   * The functional acknowledgement version.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.needImplementationAcknowledgement]
   * The value indicating whether implementation acknowledgement is needed.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.implementationAcknowledgementVersion]
   * The implementation acknowledgement version.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.batchImplementationAcknowledgements]
   * The value indicating whether to batch implementation acknowledgements.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object} [x12.receiveAgreement.protocolSettings.messageFilter]
   * The X12 message filter.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.messageFilter.messageFilterType]
   * The message filter type. Possible values include: 'NotSpecified',
   * 'Include', 'Exclude'
   * @property {object}
   * [x12.receiveAgreement.protocolSettings.securitySettings] The X12 security
   * settings.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.securitySettings.authorizationQualifier]
   * The authorization qualifier.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.securitySettings.authorizationValue]
   * The authorization value.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.securitySettings.securityQualifier]
   * The security qualifier.
   * @property {string}
   * [x12.receiveAgreement.protocolSettings.securitySettings.passwordValue] The
   * password value.
   * @property {object}
   * [x12.receiveAgreement.protocolSettings.processingSettings] The X12
   * processing settings.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.maskSecurityInfo]
   * The value indicating whether to mask security information.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.convertImpliedDecimal]
   * The value indicating whether to convert numerical type to implied decimal.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [x12.receiveAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array}
   * [x12.receiveAgreement.protocolSettings.envelopeOverrides] The X12 envelope
   * override settings.
   * @property {array}
   * [x12.receiveAgreement.protocolSettings.validationOverrides] The X12
   * validation override settings.
   * @property {array}
   * [x12.receiveAgreement.protocolSettings.messageFilterList] The X12 message
   * filter list.
   * @property {array} [x12.receiveAgreement.protocolSettings.schemaReferences]
   * The X12 schema references.
   * @property {array}
   * [x12.receiveAgreement.protocolSettings.x12DelimiterOverrides] The X12
   * delimiter override settings.
   * @property {object} [x12.sendAgreement] The X12 one-way send agreement.
   * @property {object} [x12.sendAgreement.senderBusinessIdentity] The sender
   * business identity
   * @property {string} [x12.sendAgreement.senderBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [x12.sendAgreement.senderBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [x12.sendAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string} [x12.sendAgreement.receiverBusinessIdentity.qualifier]
   * The business identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [x12.sendAgreement.receiverBusinessIdentity.value] The
   * user defined business identity value.
   * @property {object} [x12.sendAgreement.protocolSettings] The X12 protocol
   * settings.
   * @property {object} [x12.sendAgreement.protocolSettings.validationSettings]
   * The X12 validation settings.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.validateEDITypes]
   * The value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.validateXSDTypes]
   * The value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object} [x12.sendAgreement.protocolSettings.framingSettings]
   * The X12 framing settings.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.framingSettings.dataElementSeparator]
   * The data element separator.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.framingSettings.componentSeparator]
   * The component separator.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.framingSettings.replaceSeparatorsInPayload]
   * The value indicating whether to replace separators in payload.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.framingSettings.replaceCharacter] The
   * replacement character.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.framingSettings.segmentTerminator] The
   * segment terminator.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.framingSettings.characterSet] The X12
   * character set. Possible values include: 'NotSpecified', 'Basic',
   * 'Extended', 'UTF8'
   * @property {string}
   * [x12.sendAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The segment terminator suffix. Possible values include: 'NotSpecified',
   * 'None', 'CR', 'LF', 'CRLF'
   * @property {object} [x12.sendAgreement.protocolSettings.envelopeSettings]
   * The X12 envelope settings.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.controlStandardsId]
   * The controls standards id.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.useControlStandardsIdAsRepetitionCharacter]
   * The value indicating whether to use control standards id as repetition
   * character.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.senderApplicationId]
   * The sender application id.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.receiverApplicationId]
   * The receiver application id.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.controlVersionNumber]
   * The control version number.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange  control number lower bound.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange  control number upper bound.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.functionalGroupId]
   * The functional group id.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupHeaderAgencyCode]
   * The group header agency code.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupHeaderVersion]
   * The group header version.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupHeaderDateFormat]
   * The group header date format. Possible values include: 'NotSpecified',
   * 'CCYYMMDD', 'YYMMDD'
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.groupHeaderTimeFormat]
   * The group header time format. Possible values include: 'NotSpecified',
   * 'HHMM', 'HHMMSS', 'HHMMSSdd', 'HHMMSSd'
   * @property {string}
   * [x12.sendAgreement.protocolSettings.envelopeSettings.usageIndicator] The
   * usage indicator. Possible values include: 'NotSpecified', 'Test',
   * 'Information', 'Production'
   * @property {object}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings] The X12
   * acknowledgment settings.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.functionalAcknowledgementVersion]
   * The functional acknowledgement version.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.needImplementationAcknowledgement]
   * The value indicating whether implementation acknowledgement is needed.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.implementationAcknowledgementVersion]
   * The implementation acknowledgement version.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.batchImplementationAcknowledgements]
   * The value indicating whether to batch implementation acknowledgements.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object} [x12.sendAgreement.protocolSettings.messageFilter] The
   * X12 message filter.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.messageFilter.messageFilterType] The
   * message filter type. Possible values include: 'NotSpecified', 'Include',
   * 'Exclude'
   * @property {object} [x12.sendAgreement.protocolSettings.securitySettings]
   * The X12 security settings.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.securitySettings.authorizationQualifier]
   * The authorization qualifier.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.securitySettings.authorizationValue]
   * The authorization value.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.securitySettings.securityQualifier]
   * The security qualifier.
   * @property {string}
   * [x12.sendAgreement.protocolSettings.securitySettings.passwordValue] The
   * password value.
   * @property {object} [x12.sendAgreement.protocolSettings.processingSettings]
   * The X12 processing settings.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.maskSecurityInfo]
   * The value indicating whether to mask security information.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.convertImpliedDecimal]
   * The value indicating whether to convert numerical type to implied decimal.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [x12.sendAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array} [x12.sendAgreement.protocolSettings.envelopeOverrides]
   * The X12 envelope override settings.
   * @property {array} [x12.sendAgreement.protocolSettings.validationOverrides]
   * The X12 validation override settings.
   * @property {array} [x12.sendAgreement.protocolSettings.messageFilterList]
   * The X12 message filter list.
   * @property {array} [x12.sendAgreement.protocolSettings.schemaReferences]
   * The X12 schema references.
   * @property {array}
   * [x12.sendAgreement.protocolSettings.x12DelimiterOverrides] The X12
   * delimiter override settings.
   * @property {object} [edifact] The EDIFACT agreement content.
   * @property {object} [edifact.receiveAgreement] The EDIFACT one-way receive
   * agreement.
   * @property {object} [edifact.receiveAgreement.senderBusinessIdentity] The
   * sender business identity
   * @property {string}
   * [edifact.receiveAgreement.senderBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [edifact.receiveAgreement.senderBusinessIdentity.value]
   * The user defined business identity value.
   * @property {object} [edifact.receiveAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string}
   * [edifact.receiveAgreement.receiverBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string}
   * [edifact.receiveAgreement.receiverBusinessIdentity.value] The user defined
   * business identity value.
   * @property {object} [edifact.receiveAgreement.protocolSettings] The EDIFACT
   * protocol settings.
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.validationSettings] The EDIFACT
   * validation settings.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.validateEDITypes]
   * The value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.validateXSDTypes]
   * The value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.framingSettings] The EDIFACT
   * framing settings.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.serviceCodeListDirectoryVersion]
   * The service code list directory version.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.characterEncoding]
   * The character encoding.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.protocolVersion]
   * The protocol version.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.dataElementSeparator]
   * The data element separator.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.componentSeparator]
   * The component separator.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.segmentTerminator]
   * The segment terminator.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.releaseIndicator]
   * The release indicator.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.repetitionSeparator]
   * The repetition separator.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.characterSet]
   * The EDIFACT frame setting characterSet. Possible values include:
   * 'NotSpecified', 'UNOB', 'UNOA', 'UNOC', 'UNOD', 'UNOE', 'UNOF', 'UNOG',
   * 'UNOH', 'UNOI', 'UNOJ', 'UNOK', 'UNOX', 'UNOY', 'KECA'
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.decimalPointIndicator]
   * The EDIFACT frame setting decimal indicator. Possible values include:
   * 'NotSpecified', 'Comma', 'Decimal'
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The EDIFACT frame setting segment terminator suffix. Possible values
   * include: 'NotSpecified', 'None', 'CR', 'LF', 'CRLF'
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings] The EDIFACT
   * envelope settings.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupAssociationAssignedCode]
   * The group association assigned code.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.communicationAgreementId]
   * The communication agreement id.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.applyDelimiterStringAdvice]
   * The value indicating whether to apply delimiter string advice.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.createGroupingSegments]
   * The value indicating whether to create grouping segments.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordValue]
   * The recipient reference password value.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordQualifier]
   * The recipient reference password qualifier.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.applicationReferenceId]
   * The application reference id.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.processingPriorityCode]
   * The processing priority code.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange control number lower bound.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange control number upper bound.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberPrefix]
   * The interchange control number prefix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.interchangeControlNumberSuffix]
   * The interchange control number suffix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.senderReverseRoutingAddress]
   * The sender reverse routing address.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.receiverReverseRoutingAddress]
   * The receiver reverse routing address.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.functionalGroupId]
   * The functional group id.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupControllingAgencyCode]
   * The group controlling agency code.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupMessageVersion]
   * The group message version.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupMessageRelease]
   * The group message release.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberPrefix]
   * The group control number prefix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupControlNumberSuffix]
   * The group control number suffix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverQualifier]
   * The group application receiver qualifier.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverId]
   * The group application receiver id.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupApplicationSenderQualifier]
   * The group application sender qualifier.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupApplicationSenderId]
   * The group application sender id.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.groupApplicationPassword]
   * The group application password.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.isTestInterchange]
   * The value indicating whether the message is a test interchange.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.senderInternalIdentification]
   * The sender internal identification.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.senderInternalSubIdentification]
   * The sender internal sub identification.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.receiverInternalIdentification]
   * The receiver internal identification.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.envelopeSettings.receiverInternalSubIdentification]
   * The receiver internal sub identification.
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings] The
   * EDIFACT acknowledgement settings.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.messageFilter] The EDIFACT
   * message filter.
   * @property {string}
   * [edifact.receiveAgreement.protocolSettings.messageFilter.messageFilterType]
   * The message filter type. Possible values include: 'NotSpecified',
   * 'Include', 'Exclude'
   * @property {object}
   * [edifact.receiveAgreement.protocolSettings.processingSettings] The EDIFACT
   * processing Settings.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.processingSettings.maskSecurityInfo]
   * The value indicating whether to mask security information.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [edifact.receiveAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array}
   * [edifact.receiveAgreement.protocolSettings.envelopeOverrides] The EDIFACT
   * envelope override settings.
   * @property {array}
   * [edifact.receiveAgreement.protocolSettings.messageFilterList] The EDIFACT
   * message filter list.
   * @property {array}
   * [edifact.receiveAgreement.protocolSettings.schemaReferences] The EDIFACT
   * schema references.
   * @property {array}
   * [edifact.receiveAgreement.protocolSettings.validationOverrides] The
   * EDIFACT validation override settings.
   * @property {array}
   * [edifact.receiveAgreement.protocolSettings.edifactDelimiterOverrides] The
   * EDIFACT delimiter override settings.
   * @property {object} [edifact.sendAgreement] The EDIFACT one-way send
   * agreement.
   * @property {object} [edifact.sendAgreement.senderBusinessIdentity] The
   * sender business identity
   * @property {string}
   * [edifact.sendAgreement.senderBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [edifact.sendAgreement.senderBusinessIdentity.value]
   * The user defined business identity value.
   * @property {object} [edifact.sendAgreement.receiverBusinessIdentity] The
   * receiver business identity
   * @property {string}
   * [edifact.sendAgreement.receiverBusinessIdentity.qualifier] The business
   * identity qualifier e.g. as2identity, ZZ, ZZZ, 31, 32
   * @property {string} [edifact.sendAgreement.receiverBusinessIdentity.value]
   * The user defined business identity value.
   * @property {object} [edifact.sendAgreement.protocolSettings] The EDIFACT
   * protocol settings.
   * @property {object}
   * [edifact.sendAgreement.protocolSettings.validationSettings] The EDIFACT
   * validation settings.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.validateCharacterSet]
   * The value indicating whether to validate character set in the message.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.checkDuplicateInterchangeControlNumber]
   * The value indicating whether to check for duplicate interchange control
   * number.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.validationSettings.interchangeControlNumberValidityDays]
   * The validity period of interchange control number.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.checkDuplicateGroupControlNumber]
   * The value indicating whether to check for duplicate group control number.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.checkDuplicateTransactionSetControlNumber]
   * The value indicating whether to check for duplicate transaction set
   * control number.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.validateEDITypes]
   * The value indicating whether to Whether to validate EDI types.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.validateXSDTypes]
   * The value indicating whether to Whether to validate XSD types.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.allowLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to allow leading and trailing spaces and
   * zeroes.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.validationSettings.trimLeadingAndTrailingSpacesAndZeroes]
   * The value indicating whether to trim leading and trailing spaces and
   * zeroes.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.validationSettings.trailingSeparatorPolicy]
   * The trailing separator policy. Possible values include: 'NotSpecified',
   * 'NotAllowed', 'Optional', 'Mandatory'
   * @property {object}
   * [edifact.sendAgreement.protocolSettings.framingSettings] The EDIFACT
   * framing settings.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.framingSettings.serviceCodeListDirectoryVersion]
   * The service code list directory version.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.framingSettings.characterEncoding]
   * The character encoding.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.protocolVersion]
   * The protocol version.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.dataElementSeparator]
   * The data element separator.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.componentSeparator]
   * The component separator.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.segmentTerminator]
   * The segment terminator.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.releaseIndicator]
   * The release indicator.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.framingSettings.repetitionSeparator]
   * The repetition separator.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.framingSettings.characterSet] The
   * EDIFACT frame setting characterSet. Possible values include:
   * 'NotSpecified', 'UNOB', 'UNOA', 'UNOC', 'UNOD', 'UNOE', 'UNOF', 'UNOG',
   * 'UNOH', 'UNOI', 'UNOJ', 'UNOK', 'UNOX', 'UNOY', 'KECA'
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.framingSettings.decimalPointIndicator]
   * The EDIFACT frame setting decimal indicator. Possible values include:
   * 'NotSpecified', 'Comma', 'Decimal'
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.framingSettings.segmentTerminatorSuffix]
   * The EDIFACT frame setting segment terminator suffix. Possible values
   * include: 'NotSpecified', 'None', 'CR', 'LF', 'CRLF'
   * @property {object}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings] The EDIFACT
   * envelope settings.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupAssociationAssignedCode]
   * The group association assigned code.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.communicationAgreementId]
   * The communication agreement id.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.applyDelimiterStringAdvice]
   * The value indicating whether to apply delimiter string advice.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.createGroupingSegments]
   * The value indicating whether to create grouping segments.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.enableDefaultGroupHeaders]
   * The value indicating whether to enable default group headers.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordValue]
   * The recipient reference password value.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.recipientReferencePasswordQualifier]
   * The recipient reference password qualifier.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.applicationReferenceId]
   * The application reference id.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.processingPriorityCode]
   * The processing priority code.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberLowerBound]
   * The interchange control number lower bound.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberUpperBound]
   * The interchange control number upper bound.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.rolloverInterchangeControlNumber]
   * The value indicating whether to rollover interchange control number.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberPrefix]
   * The interchange control number prefix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.interchangeControlNumberSuffix]
   * The interchange control number suffix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.senderReverseRoutingAddress]
   * The sender reverse routing address.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.receiverReverseRoutingAddress]
   * The receiver reverse routing address.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.functionalGroupId]
   * The functional group id.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupControllingAgencyCode]
   * The group controlling agency code.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupMessageVersion]
   * The group message version.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupMessageRelease]
   * The group message release.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberLowerBound]
   * The group control number lower bound.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberUpperBound]
   * The group control number upper bound.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.rolloverGroupControlNumber]
   * The value indicating whether to rollover group control number.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberPrefix]
   * The group control number prefix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupControlNumberSuffix]
   * The group control number suffix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverQualifier]
   * The group application receiver qualifier.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupApplicationReceiverId]
   * The group application receiver id.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupApplicationSenderQualifier]
   * The group application sender qualifier.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupApplicationSenderId]
   * The group application sender id.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.groupApplicationPassword]
   * The group application password.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.overwriteExistingTransactionSetControlNumber]
   * The value indicating whether to overwrite existing transaction set control
   * number.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberPrefix]
   * The transaction set control number prefix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberSuffix]
   * The transaction set control number suffix.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberLowerBound]
   * The transaction set control number lower bound.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.transactionSetControlNumberUpperBound]
   * The transaction set control number upper bound.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.rolloverTransactionSetControlNumber]
   * The value indicating whether to rollover transaction set control number.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.isTestInterchange]
   * The value indicating whether the message is a test interchange.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.senderInternalIdentification]
   * The sender internal identification.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.senderInternalSubIdentification]
   * The sender internal sub identification.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.receiverInternalIdentification]
   * The receiver internal identification.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.envelopeSettings.receiverInternalSubIdentification]
   * The receiver internal sub identification.
   * @property {object}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings] The
   * EDIFACT acknowledgement settings.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.needTechnicalAcknowledgement]
   * The value indicating whether technical acknowledgement is needed.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.batchTechnicalAcknowledgements]
   * The value indicating whether to batch the technical acknowledgements.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.needFunctionalAcknowledgement]
   * The value indicating whether functional acknowledgement is needed.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.batchFunctionalAcknowledgements]
   * The value indicating whether to batch functional acknowledgements.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.needLoopForValidMessages]
   * The value indicating whether a loop is needed for valid messages.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.sendSynchronousAcknowledgement]
   * The value indicating whether to send synchronous acknowledgement.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberPrefix]
   * The acknowledgement control number prefix.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberSuffix]
   * The acknowledgement control number suffix.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberLowerBound]
   * The acknowledgement control number lower bound.
   * @property {number}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.acknowledgementControlNumberUpperBound]
   * The acknowledgement control number upper bound.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.acknowledgementSettings.rolloverAcknowledgementControlNumber]
   * The value indicating whether to rollover acknowledgement control number.
   * @property {object} [edifact.sendAgreement.protocolSettings.messageFilter]
   * The EDIFACT message filter.
   * @property {string}
   * [edifact.sendAgreement.protocolSettings.messageFilter.messageFilterType]
   * The message filter type. Possible values include: 'NotSpecified',
   * 'Include', 'Exclude'
   * @property {object}
   * [edifact.sendAgreement.protocolSettings.processingSettings] The EDIFACT
   * processing Settings.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.processingSettings.maskSecurityInfo]
   * The value indicating whether to mask security information.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.processingSettings.preserveInterchange]
   * The value indicating whether to preserve interchange.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.processingSettings.suspendInterchangeOnError]
   * The value indicating whether to suspend interchange on error.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.processingSettings.createEmptyXmlTagsForTrailingSeparators]
   * The value indicating whether to create empty xml tags for trailing
   * separators.
   * @property {boolean}
   * [edifact.sendAgreement.protocolSettings.processingSettings.useDotAsDecimalSeparator]
   * The value indicating whether to use dot as decimal separator.
   * @property {array}
   * [edifact.sendAgreement.protocolSettings.envelopeOverrides] The EDIFACT
   * envelope override settings.
   * @property {array}
   * [edifact.sendAgreement.protocolSettings.messageFilterList] The EDIFACT
   * message filter list.
   * @property {array}
   * [edifact.sendAgreement.protocolSettings.schemaReferences] The EDIFACT
   * schema references.
   * @property {array}
   * [edifact.sendAgreement.protocolSettings.validationOverrides] The EDIFACT
   * validation override settings.
   * @property {array}
   * [edifact.sendAgreement.protocolSettings.edifactDelimiterOverrides] The
   * EDIFACT delimiter override settings.
   */
  constructor() {
  }

  /**
   * Defines the metadata of AgreementContent
   *
   * @returns {object} metadata of AgreementContent
   *
   */
  mapper() {
    return {
      required: false,
      serializedName: 'AgreementContent',
      type: {
        name: 'Composite',
        className: 'AgreementContent',
        modelProperties: {
          aS2: {
            required: false,
            serializedName: 'aS2',
            type: {
              name: 'Composite',
              className: 'AS2AgreementContent'
            }
          },
          x12: {
            required: false,
            serializedName: 'x12',
            type: {
              name: 'Composite',
              className: 'X12AgreementContent'
            }
          },
          edifact: {
            required: false,
            serializedName: 'edifact',
            type: {
              name: 'Composite',
              className: 'EdifactAgreementContent'
            }
          }
        }
      }
    };
  }
}

module.exports = AgreementContent;
