/// <summary>
        /// Create the configuration object
        /// </summary>
        public object Create(object parent, object configContext, XmlNode section)
        {
            XmlElement caConfigurationElement = section.SelectSingleNode("./*[local-name() = 'ca']") as XmlElement;
            CertificationAuthorityConfiguration caConfiguration = new CertificationAuthorityConfiguration();

            if (caConfigurationElement != null)
            {
                caConfiguration.AutoApprove = caConfigurationElement?.Attributes["autoApprove"]?.Value == "true";
                caConfiguration.Name        = caConfigurationElement?.Attributes["cn"]?.Value;
                caConfiguration.ServerName  = caConfigurationElement?.Attributes["serverName"]?.Value;
            }

            var endpoints = section.SelectNodes("./*[local-name() = 'endpoint']/*[local-name() = 'add']");
            List <ServiceEndpointOptions> epOptions = new List <ServiceEndpointOptions>();

            foreach (XmlElement xel in endpoints)
            {
                ServiceEndpointCapabilities caps = ServiceEndpointCapabilities.None;
                foreach (var si in xel.Attributes["capabilities"]?.Value?.Split(' ') ?? new String[0])
                {
                    caps |= (ServiceEndpointCapabilities)Enum.Parse(typeof(ServiceEndpointCapabilities), si);
                }
                epOptions.Add(new ServiceEndpointOptions()
                {
                    BaseUrl      = xel.InnerText.Split(' '),
                    ServiceType  = (ServiceEndpointType)Enum.Parse(typeof(ServiceEndpointType), xel.Attributes["type"]?.Value),
                    Capabilities = caps,
                });
            }

            // Configuration
            return(new AmiConfiguration()
            {
                CaConfiguration = caConfiguration,
                Endpoints = epOptions
            });
        }
 /// <summary>
 /// Creates a new api endpoint behavior
 /// </summary>
 public ApiEndpointProviderShim(Type behavior, ServiceEndpointType apiType, String url, ServiceEndpointCapabilities capabilities)
 {
     this.ApiType      = apiType;
     this.Url          = new string[] { url };
     this.Capabilities = capabilities;
     this.BehaviorType = behavior;
 }