All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.apimanagement.ApiManagementServiceArgs Maven / Gradle / Ivy

There is a newer version: 2.72.0
Show newest version
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.azurenative.apimanagement;

import com.pulumi.azurenative.apimanagement.enums.NatGatewayState;
import com.pulumi.azurenative.apimanagement.enums.PublicNetworkAccess;
import com.pulumi.azurenative.apimanagement.enums.VirtualNetworkType;
import com.pulumi.azurenative.apimanagement.inputs.AdditionalLocationArgs;
import com.pulumi.azurenative.apimanagement.inputs.ApiManagementServiceIdentityArgs;
import com.pulumi.azurenative.apimanagement.inputs.ApiManagementServiceSkuPropertiesArgs;
import com.pulumi.azurenative.apimanagement.inputs.ApiVersionConstraintArgs;
import com.pulumi.azurenative.apimanagement.inputs.CertificateConfigurationArgs;
import com.pulumi.azurenative.apimanagement.inputs.HostnameConfigurationArgs;
import com.pulumi.azurenative.apimanagement.inputs.RemotePrivateEndpointConnectionWrapperArgs;
import com.pulumi.azurenative.apimanagement.inputs.VirtualNetworkConfigurationArgs;
import com.pulumi.core.Either;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class ApiManagementServiceArgs extends com.pulumi.resources.ResourceArgs {

    public static final ApiManagementServiceArgs Empty = new ApiManagementServiceArgs();

    /**
     * Additional datacenter locations of the API Management service.
     * 
     */
    @Import(name="additionalLocations")
    private @Nullable Output> additionalLocations;

    /**
     * @return Additional datacenter locations of the API Management service.
     * 
     */
    public Optional>> additionalLocations() {
        return Optional.ofNullable(this.additionalLocations);
    }

    /**
     * Control Plane Apis version constraint for the API Management service.
     * 
     */
    @Import(name="apiVersionConstraint")
    private @Nullable Output apiVersionConstraint;

    /**
     * @return Control Plane Apis version constraint for the API Management service.
     * 
     */
    public Optional> apiVersionConstraint() {
        return Optional.ofNullable(this.apiVersionConstraint);
    }

    /**
     * List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
     * 
     */
    @Import(name="certificates")
    private @Nullable Output> certificates;

    /**
     * @return List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
     * 
     */
    public Optional>> certificates() {
        return Optional.ofNullable(this.certificates);
    }

    /**
     * Custom properties of the API Management service.</br>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).</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11` can be used to disable just TLS 1.1.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10` can be used to disable TLS 1.0 on an API Management service.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11` can be used to disable just TLS 1.1 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10` can be used to disable TLS 1.0 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2` can be used to enable HTTP2 protocol on an API Management service.</br>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 1, 2018 and `False` otherwise. Http2 setting's default value is `False`.</br></br>You can disable any of the following 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.</br> Note: The following ciphers can't be disabled since they are required by internal platform components: TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,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
     * 
     */
    @Import(name="customProperties")
    private @Nullable Output> customProperties;

    /**
     * @return Custom properties of the API Management service.</br>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).</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11` can be used to disable just TLS 1.1.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10` can be used to disable TLS 1.0 on an API Management service.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11` can be used to disable just TLS 1.1 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10` can be used to disable TLS 1.0 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2` can be used to enable HTTP2 protocol on an API Management service.</br>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 1, 2018 and `False` otherwise. Http2 setting's default value is `False`.</br></br>You can disable any of the following 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.</br> Note: The following ciphers can't be disabled since they are required by internal platform components: TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,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
     * 
     */
    public Optional>> customProperties() {
        return Optional.ofNullable(this.customProperties);
    }

    /**
     * Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in master region.
     * 
     */
    @Import(name="disableGateway")
    private @Nullable Output disableGateway;

    /**
     * @return Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in master region.
     * 
     */
    public Optional> disableGateway() {
        return Optional.ofNullable(this.disableGateway);
    }

    /**
     * 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.
     * 
     */
    @Import(name="enableClientCertificate")
    private @Nullable Output enableClientCertificate;

    /**
     * @return 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.
     * 
     */
    public Optional> enableClientCertificate() {
        return Optional.ofNullable(this.enableClientCertificate);
    }

    /**
     * Custom hostname configuration of the API Management service.
     * 
     */
    @Import(name="hostnameConfigurations")
    private @Nullable Output> hostnameConfigurations;

    /**
     * @return Custom hostname configuration of the API Management service.
     * 
     */
    public Optional>> hostnameConfigurations() {
        return Optional.ofNullable(this.hostnameConfigurations);
    }

    /**
     * Managed service identity of the Api Management service.
     * 
     */
    @Import(name="identity")
    private @Nullable Output identity;

    /**
     * @return Managed service identity of the Api Management service.
     * 
     */
    public Optional> identity() {
        return Optional.ofNullable(this.identity);
    }

    /**
     * Resource location.
     * 
     */
    @Import(name="location")
    private @Nullable Output location;

    /**
     * @return Resource location.
     * 
     */
    public Optional> location() {
        return Optional.ofNullable(this.location);
    }

    /**
     * Property can be used to enable NAT Gateway for this API Management service.
     * 
     */
    @Import(name="natGatewayState")
    private @Nullable Output> natGatewayState;

    /**
     * @return Property can be used to enable NAT Gateway for this API Management service.
     * 
     */
    public Optional>> natGatewayState() {
        return Optional.ofNullable(this.natGatewayState);
    }

    /**
     * Email address from which the notification will be sent.
     * 
     */
    @Import(name="notificationSenderEmail")
    private @Nullable Output notificationSenderEmail;

    /**
     * @return Email address from which the notification will be sent.
     * 
     */
    public Optional> notificationSenderEmail() {
        return Optional.ofNullable(this.notificationSenderEmail);
    }

    /**
     * List of Private Endpoint Connections of this service.
     * 
     */
    @Import(name="privateEndpointConnections")
    private @Nullable Output> privateEndpointConnections;

    /**
     * @return List of Private Endpoint Connections of this service.
     * 
     */
    public Optional>> privateEndpointConnections() {
        return Optional.ofNullable(this.privateEndpointConnections);
    }

    /**
     * Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
     * 
     */
    @Import(name="publicIpAddressId")
    private @Nullable Output publicIpAddressId;

    /**
     * @return Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
     * 
     */
    public Optional> publicIpAddressId() {
        return Optional.ofNullable(this.publicIpAddressId);
    }

    /**
     * Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
     * 
     */
    @Import(name="publicNetworkAccess")
    private @Nullable Output> publicNetworkAccess;

    /**
     * @return Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
     * 
     */
    public Optional>> publicNetworkAccess() {
        return Optional.ofNullable(this.publicNetworkAccess);
    }

    /**
     * Publisher email.
     * 
     */
    @Import(name="publisherEmail", required=true)
    private Output publisherEmail;

    /**
     * @return Publisher email.
     * 
     */
    public Output publisherEmail() {
        return this.publisherEmail;
    }

    /**
     * Publisher name.
     * 
     */
    @Import(name="publisherName", required=true)
    private Output publisherName;

    /**
     * @return Publisher name.
     * 
     */
    public Output publisherName() {
        return this.publisherName;
    }

    /**
     * The name of the resource group. The name is case insensitive.
     * 
     */
    @Import(name="resourceGroupName", required=true)
    private Output resourceGroupName;

    /**
     * @return The name of the resource group. The name is case insensitive.
     * 
     */
    public Output resourceGroupName() {
        return this.resourceGroupName;
    }

    /**
     * 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.
     * 
     */
    @Import(name="restore")
    private @Nullable Output restore;

    /**
     * @return 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.
     * 
     */
    public Optional> restore() {
        return Optional.ofNullable(this.restore);
    }

    /**
     * The name of the API Management service.
     * 
     */
    @Import(name="serviceName")
    private @Nullable Output serviceName;

    /**
     * @return The name of the API Management service.
     * 
     */
    public Optional> serviceName() {
        return Optional.ofNullable(this.serviceName);
    }

    /**
     * SKU properties of the API Management service.
     * 
     */
    @Import(name="sku", required=true)
    private Output sku;

    /**
     * @return SKU properties of the API Management service.
     * 
     */
    public Output sku() {
        return this.sku;
    }

    /**
     * Resource tags.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Resource tags.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Virtual network configuration of the API Management service.
     * 
     */
    @Import(name="virtualNetworkConfiguration")
    private @Nullable Output virtualNetworkConfiguration;

    /**
     * @return Virtual network configuration of the API Management service.
     * 
     */
    public Optional> virtualNetworkConfiguration() {
        return Optional.ofNullable(this.virtualNetworkConfiguration);
    }

    /**
     * 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.
     * 
     */
    @Import(name="virtualNetworkType")
    private @Nullable Output> virtualNetworkType;

    /**
     * @return 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.
     * 
     */
    public Optional>> virtualNetworkType() {
        return Optional.ofNullable(this.virtualNetworkType);
    }

    /**
     * A list of availability zones denoting where the resource needs to come from.
     * 
     */
    @Import(name="zones")
    private @Nullable Output> zones;

    /**
     * @return A list of availability zones denoting where the resource needs to come from.
     * 
     */
    public Optional>> zones() {
        return Optional.ofNullable(this.zones);
    }

    private ApiManagementServiceArgs() {}

    private ApiManagementServiceArgs(ApiManagementServiceArgs $) {
        this.additionalLocations = $.additionalLocations;
        this.apiVersionConstraint = $.apiVersionConstraint;
        this.certificates = $.certificates;
        this.customProperties = $.customProperties;
        this.disableGateway = $.disableGateway;
        this.enableClientCertificate = $.enableClientCertificate;
        this.hostnameConfigurations = $.hostnameConfigurations;
        this.identity = $.identity;
        this.location = $.location;
        this.natGatewayState = $.natGatewayState;
        this.notificationSenderEmail = $.notificationSenderEmail;
        this.privateEndpointConnections = $.privateEndpointConnections;
        this.publicIpAddressId = $.publicIpAddressId;
        this.publicNetworkAccess = $.publicNetworkAccess;
        this.publisherEmail = $.publisherEmail;
        this.publisherName = $.publisherName;
        this.resourceGroupName = $.resourceGroupName;
        this.restore = $.restore;
        this.serviceName = $.serviceName;
        this.sku = $.sku;
        this.tags = $.tags;
        this.virtualNetworkConfiguration = $.virtualNetworkConfiguration;
        this.virtualNetworkType = $.virtualNetworkType;
        this.zones = $.zones;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(ApiManagementServiceArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private ApiManagementServiceArgs $;

        public Builder() {
            $ = new ApiManagementServiceArgs();
        }

        public Builder(ApiManagementServiceArgs defaults) {
            $ = new ApiManagementServiceArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param additionalLocations Additional datacenter locations of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder additionalLocations(@Nullable Output> additionalLocations) {
            $.additionalLocations = additionalLocations;
            return this;
        }

        /**
         * @param additionalLocations Additional datacenter locations of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder additionalLocations(List additionalLocations) {
            return additionalLocations(Output.of(additionalLocations));
        }

        /**
         * @param additionalLocations Additional datacenter locations of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder additionalLocations(AdditionalLocationArgs... additionalLocations) {
            return additionalLocations(List.of(additionalLocations));
        }

        /**
         * @param apiVersionConstraint Control Plane Apis version constraint for the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder apiVersionConstraint(@Nullable Output apiVersionConstraint) {
            $.apiVersionConstraint = apiVersionConstraint;
            return this;
        }

        /**
         * @param apiVersionConstraint Control Plane Apis version constraint for the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder apiVersionConstraint(ApiVersionConstraintArgs apiVersionConstraint) {
            return apiVersionConstraint(Output.of(apiVersionConstraint));
        }

        /**
         * @param certificates List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
         * 
         * @return builder
         * 
         */
        public Builder certificates(@Nullable Output> certificates) {
            $.certificates = certificates;
            return this;
        }

        /**
         * @param certificates List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
         * 
         * @return builder
         * 
         */
        public Builder certificates(List certificates) {
            return certificates(Output.of(certificates));
        }

        /**
         * @param certificates List of Certificates that need to be installed in the API Management service. Max supported certificates that can be installed is 10.
         * 
         * @return builder
         * 
         */
        public Builder certificates(CertificateConfigurationArgs... certificates) {
            return certificates(List.of(certificates));
        }

        /**
         * @param customProperties Custom properties of the API Management service.</br>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).</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11` can be used to disable just TLS 1.1.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10` can be used to disable TLS 1.0 on an API Management service.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11` can be used to disable just TLS 1.1 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10` can be used to disable TLS 1.0 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2` can be used to enable HTTP2 protocol on an API Management service.</br>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 1, 2018 and `False` otherwise. Http2 setting's default value is `False`.</br></br>You can disable any of the following 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.</br> Note: The following ciphers can't be disabled since they are required by internal platform components: TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,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
         * 
         * @return builder
         * 
         */
        public Builder customProperties(@Nullable Output> customProperties) {
            $.customProperties = customProperties;
            return this;
        }

        /**
         * @param customProperties Custom properties of the API Management service.</br>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).</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11` can be used to disable just TLS 1.1.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10` can be used to disable TLS 1.0 on an API Management service.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11` can be used to disable just TLS 1.1 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10` can be used to disable TLS 1.0 for communications with backends.</br>Setting `Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2` can be used to enable HTTP2 protocol on an API Management service.</br>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 1, 2018 and `False` otherwise. Http2 setting's default value is `False`.</br></br>You can disable any of the following 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.</br> Note: The following ciphers can't be disabled since they are required by internal platform components: TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,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
         * 
         * @return builder
         * 
         */
        public Builder customProperties(Map customProperties) {
            return customProperties(Output.of(customProperties));
        }

        /**
         * @param disableGateway Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in master region.
         * 
         * @return builder
         * 
         */
        public Builder disableGateway(@Nullable Output disableGateway) {
            $.disableGateway = disableGateway;
            return this;
        }

        /**
         * @param disableGateway Property only valid for an Api Management service deployed in multiple locations. This can be used to disable the gateway in master region.
         * 
         * @return builder
         * 
         */
        public Builder disableGateway(Boolean disableGateway) {
            return disableGateway(Output.of(disableGateway));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder enableClientCertificate(@Nullable Output enableClientCertificate) {
            $.enableClientCertificate = enableClientCertificate;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder enableClientCertificate(Boolean enableClientCertificate) {
            return enableClientCertificate(Output.of(enableClientCertificate));
        }

        /**
         * @param hostnameConfigurations Custom hostname configuration of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder hostnameConfigurations(@Nullable Output> hostnameConfigurations) {
            $.hostnameConfigurations = hostnameConfigurations;
            return this;
        }

        /**
         * @param hostnameConfigurations Custom hostname configuration of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder hostnameConfigurations(List hostnameConfigurations) {
            return hostnameConfigurations(Output.of(hostnameConfigurations));
        }

        /**
         * @param hostnameConfigurations Custom hostname configuration of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder hostnameConfigurations(HostnameConfigurationArgs... hostnameConfigurations) {
            return hostnameConfigurations(List.of(hostnameConfigurations));
        }

        /**
         * @param identity Managed service identity of the Api Management service.
         * 
         * @return builder
         * 
         */
        public Builder identity(@Nullable Output identity) {
            $.identity = identity;
            return this;
        }

        /**
         * @param identity Managed service identity of the Api Management service.
         * 
         * @return builder
         * 
         */
        public Builder identity(ApiManagementServiceIdentityArgs identity) {
            return identity(Output.of(identity));
        }

        /**
         * @param location Resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(@Nullable Output location) {
            $.location = location;
            return this;
        }

        /**
         * @param location Resource location.
         * 
         * @return builder
         * 
         */
        public Builder location(String location) {
            return location(Output.of(location));
        }

        /**
         * @param natGatewayState Property can be used to enable NAT Gateway for this API Management service.
         * 
         * @return builder
         * 
         */
        public Builder natGatewayState(@Nullable Output> natGatewayState) {
            $.natGatewayState = natGatewayState;
            return this;
        }

        /**
         * @param natGatewayState Property can be used to enable NAT Gateway for this API Management service.
         * 
         * @return builder
         * 
         */
        public Builder natGatewayState(Either natGatewayState) {
            return natGatewayState(Output.of(natGatewayState));
        }

        /**
         * @param natGatewayState Property can be used to enable NAT Gateway for this API Management service.
         * 
         * @return builder
         * 
         */
        public Builder natGatewayState(String natGatewayState) {
            return natGatewayState(Either.ofLeft(natGatewayState));
        }

        /**
         * @param natGatewayState Property can be used to enable NAT Gateway for this API Management service.
         * 
         * @return builder
         * 
         */
        public Builder natGatewayState(NatGatewayState natGatewayState) {
            return natGatewayState(Either.ofRight(natGatewayState));
        }

        /**
         * @param notificationSenderEmail Email address from which the notification will be sent.
         * 
         * @return builder
         * 
         */
        public Builder notificationSenderEmail(@Nullable Output notificationSenderEmail) {
            $.notificationSenderEmail = notificationSenderEmail;
            return this;
        }

        /**
         * @param notificationSenderEmail Email address from which the notification will be sent.
         * 
         * @return builder
         * 
         */
        public Builder notificationSenderEmail(String notificationSenderEmail) {
            return notificationSenderEmail(Output.of(notificationSenderEmail));
        }

        /**
         * @param privateEndpointConnections List of Private Endpoint Connections of this service.
         * 
         * @return builder
         * 
         */
        public Builder privateEndpointConnections(@Nullable Output> privateEndpointConnections) {
            $.privateEndpointConnections = privateEndpointConnections;
            return this;
        }

        /**
         * @param privateEndpointConnections List of Private Endpoint Connections of this service.
         * 
         * @return builder
         * 
         */
        public Builder privateEndpointConnections(List privateEndpointConnections) {
            return privateEndpointConnections(Output.of(privateEndpointConnections));
        }

        /**
         * @param privateEndpointConnections List of Private Endpoint Connections of this service.
         * 
         * @return builder
         * 
         */
        public Builder privateEndpointConnections(RemotePrivateEndpointConnectionWrapperArgs... privateEndpointConnections) {
            return privateEndpointConnections(List.of(privateEndpointConnections));
        }

        /**
         * @param publicIpAddressId Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder publicIpAddressId(@Nullable Output publicIpAddressId) {
            $.publicIpAddressId = publicIpAddressId;
            return this;
        }

        /**
         * @param publicIpAddressId Public Standard SKU IP V4 based IP address to be associated with Virtual Network deployed service in the region. Supported only for Developer and Premium SKU being deployed in Virtual Network.
         * 
         * @return builder
         * 
         */
        public Builder publicIpAddressId(String publicIpAddressId) {
            return publicIpAddressId(Output.of(publicIpAddressId));
        }

        /**
         * @param publicNetworkAccess Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(@Nullable Output> publicNetworkAccess) {
            $.publicNetworkAccess = publicNetworkAccess;
            return this;
        }

        /**
         * @param publicNetworkAccess Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(Either publicNetworkAccess) {
            return publicNetworkAccess(Output.of(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(String publicNetworkAccess) {
            return publicNetworkAccess(Either.ofLeft(publicNetworkAccess));
        }

        /**
         * @param publicNetworkAccess Whether or not public endpoint access is allowed for this API Management service.  Value is optional but if passed in, must be 'Enabled' or 'Disabled'. If 'Disabled', private endpoints are the exclusive access method. Default value is 'Enabled'
         * 
         * @return builder
         * 
         */
        public Builder publicNetworkAccess(PublicNetworkAccess publicNetworkAccess) {
            return publicNetworkAccess(Either.ofRight(publicNetworkAccess));
        }

        /**
         * @param publisherEmail Publisher email.
         * 
         * @return builder
         * 
         */
        public Builder publisherEmail(Output publisherEmail) {
            $.publisherEmail = publisherEmail;
            return this;
        }

        /**
         * @param publisherEmail Publisher email.
         * 
         * @return builder
         * 
         */
        public Builder publisherEmail(String publisherEmail) {
            return publisherEmail(Output.of(publisherEmail));
        }

        /**
         * @param publisherName Publisher name.
         * 
         * @return builder
         * 
         */
        public Builder publisherName(Output publisherName) {
            $.publisherName = publisherName;
            return this;
        }

        /**
         * @param publisherName Publisher name.
         * 
         * @return builder
         * 
         */
        public Builder publisherName(String publisherName) {
            return publisherName(Output.of(publisherName));
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(Output resourceGroupName) {
            $.resourceGroupName = resourceGroupName;
            return this;
        }

        /**
         * @param resourceGroupName The name of the resource group. The name is case insensitive.
         * 
         * @return builder
         * 
         */
        public Builder resourceGroupName(String resourceGroupName) {
            return resourceGroupName(Output.of(resourceGroupName));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder restore(@Nullable Output restore) {
            $.restore = restore;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder restore(Boolean restore) {
            return restore(Output.of(restore));
        }

        /**
         * @param serviceName The name of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder serviceName(@Nullable Output serviceName) {
            $.serviceName = serviceName;
            return this;
        }

        /**
         * @param serviceName The name of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder serviceName(String serviceName) {
            return serviceName(Output.of(serviceName));
        }

        /**
         * @param sku SKU properties of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder sku(Output sku) {
            $.sku = sku;
            return this;
        }

        /**
         * @param sku SKU properties of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder sku(ApiManagementServiceSkuPropertiesArgs sku) {
            return sku(Output.of(sku));
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Resource tags.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param virtualNetworkConfiguration Virtual network configuration of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkConfiguration(@Nullable Output virtualNetworkConfiguration) {
            $.virtualNetworkConfiguration = virtualNetworkConfiguration;
            return this;
        }

        /**
         * @param virtualNetworkConfiguration Virtual network configuration of the API Management service.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkConfiguration(VirtualNetworkConfigurationArgs virtualNetworkConfiguration) {
            return virtualNetworkConfiguration(Output.of(virtualNetworkConfiguration));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkType(@Nullable Output> virtualNetworkType) {
            $.virtualNetworkType = virtualNetworkType;
            return this;
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkType(Either virtualNetworkType) {
            return virtualNetworkType(Output.of(virtualNetworkType));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkType(String virtualNetworkType) {
            return virtualNetworkType(Either.ofLeft(virtualNetworkType));
        }

        /**
         * @param 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.
         * 
         * @return builder
         * 
         */
        public Builder virtualNetworkType(VirtualNetworkType virtualNetworkType) {
            return virtualNetworkType(Either.ofRight(virtualNetworkType));
        }

        /**
         * @param zones A list of availability zones denoting where the resource needs to come from.
         * 
         * @return builder
         * 
         */
        public Builder zones(@Nullable Output> zones) {
            $.zones = zones;
            return this;
        }

        /**
         * @param zones A list of availability zones denoting where the resource needs to come from.
         * 
         * @return builder
         * 
         */
        public Builder zones(List zones) {
            return zones(Output.of(zones));
        }

        /**
         * @param zones A list of availability zones denoting where the resource needs to come from.
         * 
         * @return builder
         * 
         */
        public Builder zones(String... zones) {
            return zones(List.of(zones));
        }

        public ApiManagementServiceArgs build() {
            $.disableGateway = Codegen.booleanProp("disableGateway").output().arg($.disableGateway).def(false).getNullable();
            $.enableClientCertificate = Codegen.booleanProp("enableClientCertificate").output().arg($.enableClientCertificate).def(false).getNullable();
            $.natGatewayState = Codegen.stringProp("natGatewayState").left(NatGatewayState.class).output().arg($.natGatewayState).def("Disabled").getNullable();
            if ($.publisherEmail == null) {
                throw new MissingRequiredPropertyException("ApiManagementServiceArgs", "publisherEmail");
            }
            if ($.publisherName == null) {
                throw new MissingRequiredPropertyException("ApiManagementServiceArgs", "publisherName");
            }
            if ($.resourceGroupName == null) {
                throw new MissingRequiredPropertyException("ApiManagementServiceArgs", "resourceGroupName");
            }
            $.restore = Codegen.booleanProp("restore").output().arg($.restore).def(false).getNullable();
            if ($.sku == null) {
                throw new MissingRequiredPropertyException("ApiManagementServiceArgs", "sku");
            }
            $.virtualNetworkType = Codegen.stringProp("virtualNetworkType").left(VirtualNetworkType.class).output().arg($.virtualNetworkType).def("None").getNullable();
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy