/// <summary>
 /// Initializes a new instance of the ApiManagementServiceResource
 /// class.
 /// </summary>
 /// <param name="publisherEmail">Publisher email.</param>
 /// <param name="publisherName">Publisher name.</param>
 /// <param name="sku">SKU properties of the API Management
 /// service.</param>
 /// <param name="location">Resource location.</param>
 /// <param name="id">Resource ID.</param>
 /// <param name="name">Resource name.</param>
 /// <param name="type">Resource type for API Management resource is set
 /// to Microsoft.ApiManagement.</param>
 /// <param name="tags">Resource tags.</param>
 /// <param name="notificationSenderEmail">Email address from which the
 /// notification will be sent.</param>
 /// <param name="provisioningState">The current provisioning state of
 /// the API Management service which can be one of the following:
 /// Created/Activating/Succeeded/Updating/Failed/Stopped/Terminating/TerminationFailed/Deleted.</param>
 /// <param name="targetProvisioningState">The provisioning state of the
 /// API Management service, which is targeted by the long running
 /// operation started on the service.</param>
 /// <param name="createdAtUtc">Creation UTC date of the API Management
 /// service.The date conforms to the following format:
 /// `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601
 /// standard.</param>
 /// <param name="gatewayUrl">Gateway URL of the API Management
 /// service.</param>
 /// <param name="gatewayRegionalUrl">Gateway URL of the API Management
 /// service in the Default Region.</param>
 /// <param name="portalUrl">Publisher portal endpoint Url of the API
 /// Management service.</param>
 /// <param name="managementApiUrl">Management API endpoint URL of the
 /// API Management service.</param>
 /// <param name="scmUrl">SCM endpoint URL of the API Management
 /// service.</param>
 /// <param name="developerPortalUrl">DEveloper Portal endpoint URL of
 /// the API Management service.</param>
 /// <param name="hostnameConfigurations">Custom hostname configuration
 /// of the API Management service.</param>
 /// <param name="publicIPAddresses">Public Static Load Balanced IP
 /// addresses of the API Management service in Primary region.
 /// Available only for Basic, Standard, Premium and Isolated
 /// SKU.</param>
 /// <param name="privateIPAddresses">Private Static Load Balanced IP
 /// addresses of the API Management service in Primary region which is
 /// deployed in an Internal Virtual Network. Available only for Basic,
 /// Standard, Premium and Isolated SKU.</param>
 /// <param name="virtualNetworkConfiguration">Virtual network
 /// configuration of the API Management service.</param>
 /// <param name="additionalLocations">Additional datacenter locations
 /// of the API Management service.</param>
 /// <param name="customProperties">Custom properties of the API
 /// Management service.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168`
 /// will disable the cipher TLS_RSA_WITH_3DES_EDE_CBC_SHA for all
 /// TLS(1.0, 1.1 and 1.2).&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11`
 /// can be used to disable just TLS 1.1.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10`
 /// can be used to disable TLS 1.0 on an API Management
 /// service.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11`
 /// can be used to disable just TLS 1.1 for communications with
 /// backends.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10`
 /// can be used to disable TLS 1.0 for communications with
 /// backends.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2`
 /// can be used to enable HTTP2 protocol on an API Management
 /// service.&lt;/br&gt;Not specifying any of these properties on PATCH
 /// operation will reset omitted properties' values to their defaults.
 /// For all the settings except Http2 the default value is `True` if
 /// the service was created on or before April 1st 2018 and `False`
 /// otherwise. Http2 setting's default value is
 /// `False`.&lt;/br&gt;&lt;/br&gt;You can disable any of next ciphers
 /// by using settings
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]`:
 /// TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
 /// TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
 /// TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
 /// TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
 /// TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256,
 /// TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,
 /// TLS_RSA_WITH_AES_128_CBC_SHA. For example,
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256`:`false`.
 /// The default value is `true` for them.  Note: next ciphers can't be
 /// disabled since they are required by Azure CloudService internal
 /// components:
 /// TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384</param>
 /// <param name="certificates">List of Certificates that need to be
 /// installed in the API Management service. Max supported certificates
 /// that can be installed is 10.</param>
 /// <param name="enableClientCertificate">Property only meant to be
 /// used for Consumption SKU Service. This enforces a client
 /// certificate to be presented on each request to the gateway. This
 /// also enables the ability to authenticate the certificate in the
 /// policy on the gateway.</param>
 /// <param name="disableGateway">Property only valid for an Api
 /// Management service deployed in multiple locations. This can be used
 /// to disable the gateway in master region.</param>
 /// <param name="virtualNetworkType">The type of VPN in which API
 /// Management service needs to be configured in. None (Default Value)
 /// means the API Management service is not part of any Virtual
 /// Network, External means the API Management deployment is set up
 /// inside a Virtual Network having an Internet Facing Endpoint, and
 /// Internal means that API Management deployment is setup inside a
 /// Virtual Network having an Intranet Facing Endpoint only. Possible
 /// values include: 'None', 'External', 'Internal'</param>
 /// <param name="apiVersionConstraint">Control Plane Apis version
 /// constraint for the API Management service.</param>
 /// <param name="restore">Undelete Api Management Service if it was
 /// previously soft-deleted. If this flag is specified and set to True
 /// all other properties will be ignored.</param>
 /// <param name="identity">Managed service identity of the Api
 /// Management service.</param>
 /// <param name="etag">ETag of the resource.</param>
 /// <param name="zones">A list of availability zones denoting where the
 /// resource needs to come from.</param>
 public ApiManagementServiceResource(string publisherEmail, string publisherName, ApiManagementServiceSkuProperties sku, string location, string id = default(string), string name = default(string), string type = default(string), IDictionary <string, string> tags = default(IDictionary <string, string>), string notificationSenderEmail = default(string), string provisioningState = default(string), string targetProvisioningState = default(string), System.DateTime?createdAtUtc = default(System.DateTime?), string gatewayUrl = default(string), string gatewayRegionalUrl = default(string), string portalUrl = default(string), string managementApiUrl = default(string), string scmUrl = default(string), string developerPortalUrl = default(string), IList <HostnameConfiguration> hostnameConfigurations = default(IList <HostnameConfiguration>), IList <string> publicIPAddresses = default(IList <string>), IList <string> privateIPAddresses = default(IList <string>), VirtualNetworkConfiguration virtualNetworkConfiguration = default(VirtualNetworkConfiguration), IList <AdditionalLocation> additionalLocations = default(IList <AdditionalLocation>), IDictionary <string, string> customProperties = default(IDictionary <string, string>), IList <CertificateConfiguration> certificates = default(IList <CertificateConfiguration>), bool?enableClientCertificate = default(bool?), bool?disableGateway = default(bool?), string virtualNetworkType = default(string), ApiVersionConstraint apiVersionConstraint = default(ApiVersionConstraint), bool?restore = default(bool?), ApiManagementServiceIdentity identity = default(ApiManagementServiceIdentity), string etag = default(string), IList <string> zones = default(IList <string>))
     : base(id, name, type, tags)
 {
     NotificationSenderEmail = notificationSenderEmail;
     ProvisioningState       = provisioningState;
     TargetProvisioningState = targetProvisioningState;
     CreatedAtUtc            = createdAtUtc;
     GatewayUrl                  = gatewayUrl;
     GatewayRegionalUrl          = gatewayRegionalUrl;
     PortalUrl                   = portalUrl;
     ManagementApiUrl            = managementApiUrl;
     ScmUrl                      = scmUrl;
     DeveloperPortalUrl          = developerPortalUrl;
     HostnameConfigurations      = hostnameConfigurations;
     PublicIPAddresses           = publicIPAddresses;
     PrivateIPAddresses          = privateIPAddresses;
     VirtualNetworkConfiguration = virtualNetworkConfiguration;
     AdditionalLocations         = additionalLocations;
     CustomProperties            = customProperties;
     Certificates                = certificates;
     EnableClientCertificate     = enableClientCertificate;
     DisableGateway              = disableGateway;
     VirtualNetworkType          = virtualNetworkType;
     ApiVersionConstraint        = apiVersionConstraint;
     Restore                     = restore;
     PublisherEmail              = publisherEmail;
     PublisherName               = publisherName;
     Sku      = sku;
     Identity = identity;
     Location = location;
     Etag     = etag;
     Zones    = zones;
     CustomInit();
 }
 /// <summary>
 /// Initializes a new instance of the
 /// ApiManagementServiceBaseProperties class.
 /// </summary>
 /// <param name="notificationSenderEmail">Email address from which the
 /// notification will be sent.</param>
 /// <param name="provisioningState">The current provisioning state of
 /// the API Management service which can be one of the following:
 /// Created/Activating/Succeeded/Updating/Failed/Stopped/Terminating/TerminationFailed/Deleted.</param>
 /// <param name="targetProvisioningState">The provisioning state of the
 /// API Management service, which is targeted by the long running
 /// operation started on the service.</param>
 /// <param name="createdAtUtc">Creation UTC date of the API Management
 /// service.The date conforms to the following format:
 /// `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601
 /// standard.</param>
 /// <param name="gatewayUrl">Gateway URL of the API Management
 /// service.</param>
 /// <param name="gatewayRegionalUrl">Gateway URL of the API Management
 /// service in the Default Region.</param>
 /// <param name="portalUrl">Publisher portal endpoint Url of the API
 /// Management service.</param>
 /// <param name="managementApiUrl">Management API endpoint URL of the
 /// API Management service.</param>
 /// <param name="scmUrl">SCM endpoint URL of the API Management
 /// service.</param>
 /// <param name="developerPortalUrl">DEveloper Portal endpoint URL of
 /// the API Management service.</param>
 /// <param name="hostnameConfigurations">Custom hostname configuration
 /// of the API Management service.</param>
 /// <param name="publicIPAddresses">Public Static Load Balanced IP
 /// addresses of the API Management service in Primary region.
 /// Available only for Basic, Standard and Premium SKU.</param>
 /// <param name="privateIPAddresses">Private Static Load Balanced IP
 /// addresses of the API Management service in Primary region which is
 /// deployed in an Internal Virtual Network. Available only for Basic,
 /// Standard and Premium SKU.</param>
 /// <param name="virtualNetworkConfiguration">Virtual network
 /// configuration of the API Management service.</param>
 /// <param name="additionalLocations">Additional datacenter locations
 /// of the API Management service.</param>
 /// <param name="customProperties">Custom properties of the API
 /// Management service.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168`
 /// will disable the cipher TLS_RSA_WITH_3DES_EDE_CBC_SHA for all
 /// TLS(1.0, 1.1 and 1.2).&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11`
 /// can be used to disable just TLS 1.1.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10`
 /// can be used to disable TLS 1.0 on an API Management
 /// service.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11`
 /// can be used to disable just TLS 1.1 for communications with
 /// backends.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10`
 /// can be used to disable TLS 1.0 for communications with
 /// backends.&lt;/br&gt;Setting
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2`
 /// can be used to enable HTTP2 protocol on an API Management
 /// service.&lt;/br&gt;Not specifying any of these properties on PATCH
 /// operation will reset omitted properties' values to their defaults.
 /// For all the settings except Http2 the default value is `True` if
 /// the service was created on or before April 1st 2018 and `False`
 /// otherwise. Http2 setting's default value is
 /// `False`.&lt;/br&gt;&lt;/br&gt;You can disable any of next ciphers
 /// by using settings
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.[cipher_name]`:
 /// TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
 /// TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
 /// TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
 /// TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
 /// TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA256,
 /// TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,
 /// TLS_RSA_WITH_AES_128_CBC_SHA. For example,
 /// `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256`:`false`.
 /// The default value is `true` for them.  Note: next ciphers can't be
 /// disabled since they are required by Azure CloudService internal
 /// components:
 /// TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_GCM_SHA384</param>
 /// <param name="certificates">List of Certificates that need to be
 /// installed in the API Management service. Max supported certificates
 /// that can be installed is 10.</param>
 /// <param name="enableClientCertificate">Property only meant to be
 /// used for Consumption SKU Service. This enforces a client
 /// certificate to be presented on each request to the gateway. This
 /// also enables the ability to authenticate the certificate in the
 /// policy on the gateway.</param>
 /// <param name="disableGateway">Property only valid for an Api
 /// Management service deployed in multiple locations. This can be used
 /// to disable the gateway in master region.</param>
 /// <param name="virtualNetworkType">The type of VPN in which API
 /// Management service needs to be configured in. None (Default Value)
 /// means the API Management service is not part of any Virtual
 /// Network, External means the API Management deployment is set up
 /// inside a Virtual Network having an Internet Facing Endpoint, and
 /// Internal means that API Management deployment is setup inside a
 /// Virtual Network having an Intranet Facing Endpoint only. Possible
 /// values include: 'None', 'External', 'Internal'</param>
 /// <param name="apiVersionConstraint">Control Plane Apis version
 /// constraint for the API Management service.</param>
 public ApiManagementServiceBaseProperties(string notificationSenderEmail = default(string), string provisioningState = default(string), string targetProvisioningState = default(string), System.DateTime?createdAtUtc = default(System.DateTime?), string gatewayUrl = default(string), string gatewayRegionalUrl = default(string), string portalUrl = default(string), string managementApiUrl = default(string), string scmUrl = default(string), string developerPortalUrl = default(string), IList <HostnameConfiguration> hostnameConfigurations = default(IList <HostnameConfiguration>), IList <string> publicIPAddresses = default(IList <string>), IList <string> privateIPAddresses = default(IList <string>), VirtualNetworkConfiguration virtualNetworkConfiguration = default(VirtualNetworkConfiguration), IList <AdditionalLocation> additionalLocations = default(IList <AdditionalLocation>), IDictionary <string, string> customProperties = default(IDictionary <string, string>), IList <CertificateConfiguration> certificates = default(IList <CertificateConfiguration>), bool?enableClientCertificate = default(bool?), bool?disableGateway = default(bool?), string virtualNetworkType = default(string), ApiVersionConstraint apiVersionConstraint = default(ApiVersionConstraint))
 {
     NotificationSenderEmail = notificationSenderEmail;
     ProvisioningState       = provisioningState;
     TargetProvisioningState = targetProvisioningState;
     CreatedAtUtc            = createdAtUtc;
     GatewayUrl                  = gatewayUrl;
     GatewayRegionalUrl          = gatewayRegionalUrl;
     PortalUrl                   = portalUrl;
     ManagementApiUrl            = managementApiUrl;
     ScmUrl                      = scmUrl;
     DeveloperPortalUrl          = developerPortalUrl;
     HostnameConfigurations      = hostnameConfigurations;
     PublicIPAddresses           = publicIPAddresses;
     PrivateIPAddresses          = privateIPAddresses;
     VirtualNetworkConfiguration = virtualNetworkConfiguration;
     AdditionalLocations         = additionalLocations;
     CustomProperties            = customProperties;
     Certificates                = certificates;
     EnableClientCertificate     = enableClientCertificate;
     DisableGateway              = disableGateway;
     VirtualNetworkType          = virtualNetworkType;
     ApiVersionConstraint        = apiVersionConstraint;
     CustomInit();
 }