/// <summary>
        /// Initializes a new instance of the <see cref="Integration" /> class.
        /// </summary>



        /// <param name="IntegrationType">Type of the integration.</param>



        /// <param name="IntendedState">Configured state of the integration. (required).</param>



        /// <param name="Config">Configuration information for the integration..</param>



        /// <param name="ReportedState">Last reported status of the integration..</param>



        /// <param name="Attributes">Read-only attributes for the integration..</param>



        public Integration(IntegrationType IntegrationType = null, IntendedStateEnum?IntendedState = null, IntegrationConfigurationInfo Config = null, IntegrationStatusInfo ReportedState = null, Dictionary <string, string> Attributes = null)
        {
            // to ensure "IntendedState" is required (not null)
            if (IntendedState == null)
            {
                throw new InvalidDataException("IntendedState is a required property for Integration and cannot be null");
            }
            else
            {
                this.IntendedState = IntendedState;
            }



            this.IntegrationType = IntegrationType;



            this.Config = Config;



            this.ReportedState = ReportedState;



            this.Attributes = Attributes;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="Integration" /> class.
 /// </summary>
 /// <param name="IntegrationType">Type of the integration.</param>
 /// <param name="IntendedState">Configured state of the integration. (required).</param>
 /// <param name="Config">Configuration information for the integration..</param>
 /// <param name="ReportedState">Last reported status of the integration..</param>
 /// <param name="Attributes">Read-only attributes for the integration..</param>
 public Integration(IntegrationType IntegrationType = null, IntendedStateEnum?IntendedState = null, IntegrationConfigurationInfo Config = null, IntegrationStatusInfo ReportedState = null, Dictionary <string, string> Attributes = null)
 {
     this.IntegrationType = IntegrationType;
     this.IntendedState   = IntendedState;
     this.Config          = Config;
     this.ReportedState   = ReportedState;
     this.Attributes      = Attributes;
 }