// *** 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.azure.appservice.outputs;

import com.pulumi.azure.appservice.outputs.GetAppServiceConnectionString;
import com.pulumi.azure.appservice.outputs.GetAppServiceSiteConfig;
import com.pulumi.azure.appservice.outputs.GetAppServiceSiteCredential;
import com.pulumi.azure.appservice.outputs.GetAppServiceSourceControl;
import com.pulumi.core.annotations.CustomType;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@CustomType
public final class GetAppServiceResult {
    /**
     * @return The ID of the App Service Plan within which the App Service exists.
     * 
     */
    private String appServicePlanId;
    /**
     * @return A key-value pair of App Settings for the App Service.
     * 
     */
    private Map<String,String> appSettings;
    /**
     * @return Does the App Service send session affinity cookies, which route client requests in the same session to the same instance?
     * 
     */
    private Boolean clientAffinityEnabled;
    /**
     * @return Does the App Service require client certificates for incoming requests?
     * 
     */
    private Boolean clientCertEnabled;
    /**
     * @return An `connection_string` block as defined below.
     * 
     */
    private List<GetAppServiceConnectionString> connectionStrings;
    /**
     * @return An identifier used by App Service to perform domain ownership verification via DNS TXT record.
     * 
     */
    private String customDomainVerificationId;
    /**
     * @return The Default Hostname associated with the App Service - such as `mysite.azurewebsites.net`
     * 
     */
    private String defaultSiteHostname;
    /**
     * @return Is the App Service Enabled?
     * 
     */
    private Boolean enabled;
    /**
     * @return Can the App Service only be accessed via HTTPS?
     * 
     */
    private Boolean httpsOnly;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    /**
     * @return The Azure location where the App Service exists.
     * 
     */
    private String location;
    /**
     * @return The name for this IP Restriction.
     * 
     */
    private String name;
    /**
     * @return A list of outbound IP addresses - such as `[&#34;52.23.25.3&#34;, &#34;52.143.43.12&#34;]`
     * 
     */
    private List<String> outboundIpAddressLists;
    /**
     * @return A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12`
     * 
     */
    private String outboundIpAddresses;
    /**
     * @return A list of outbound IP addresses - such as `[&#34;52.23.25.3&#34;, &#34;52.143.43.12&#34;, &#34;52.143.43.17&#34;]` - not all of which are necessarily in use. Superset of `outbound_ip_address_list`.
     * 
     */
    private List<String> possibleOutboundIpAddressLists;
    /**
     * @return A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12,52.143.43.17` - not all of which are necessarily in use. Superset of `outbound_ip_addresses`.
     * 
     */
    private String possibleOutboundIpAddresses;
    private String resourceGroupName;
    /**
     * @return A `site_config` block as defined below.
     * 
     */
    private List<GetAppServiceSiteConfig> siteConfigs;
    private List<GetAppServiceSiteCredential> siteCredentials;
    /**
     * @return A `source_control` block as defined below.
     * 
     */
    private List<GetAppServiceSourceControl> sourceControls;
    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    private Map<String,String> tags;

    private GetAppServiceResult() {}
    /**
     * @return The ID of the App Service Plan within which the App Service exists.
     * 
     */
    public String appServicePlanId() {
        return this.appServicePlanId;
    }
    /**
     * @return A key-value pair of App Settings for the App Service.
     * 
     */
    public Map<String,String> appSettings() {
        return this.appSettings;
    }
    /**
     * @return Does the App Service send session affinity cookies, which route client requests in the same session to the same instance?
     * 
     */
    public Boolean clientAffinityEnabled() {
        return this.clientAffinityEnabled;
    }
    /**
     * @return Does the App Service require client certificates for incoming requests?
     * 
     */
    public Boolean clientCertEnabled() {
        return this.clientCertEnabled;
    }
    /**
     * @return An `connection_string` block as defined below.
     * 
     */
    public List<GetAppServiceConnectionString> connectionStrings() {
        return this.connectionStrings;
    }
    /**
     * @return An identifier used by App Service to perform domain ownership verification via DNS TXT record.
     * 
     */
    public String customDomainVerificationId() {
        return this.customDomainVerificationId;
    }
    /**
     * @return The Default Hostname associated with the App Service - such as `mysite.azurewebsites.net`
     * 
     */
    public String defaultSiteHostname() {
        return this.defaultSiteHostname;
    }
    /**
     * @return Is the App Service Enabled?
     * 
     */
    public Boolean enabled() {
        return this.enabled;
    }
    /**
     * @return Can the App Service only be accessed via HTTPS?
     * 
     */
    public Boolean httpsOnly() {
        return this.httpsOnly;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return The Azure location where the App Service exists.
     * 
     */
    public String location() {
        return this.location;
    }
    /**
     * @return The name for this IP Restriction.
     * 
     */
    public String name() {
        return this.name;
    }
    /**
     * @return A list of outbound IP addresses - such as `[&#34;52.23.25.3&#34;, &#34;52.143.43.12&#34;]`
     * 
     */
    public List<String> outboundIpAddressLists() {
        return this.outboundIpAddressLists;
    }
    /**
     * @return A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12`
     * 
     */
    public String outboundIpAddresses() {
        return this.outboundIpAddresses;
    }
    /**
     * @return A list of outbound IP addresses - such as `[&#34;52.23.25.3&#34;, &#34;52.143.43.12&#34;, &#34;52.143.43.17&#34;]` - not all of which are necessarily in use. Superset of `outbound_ip_address_list`.
     * 
     */
    public List<String> possibleOutboundIpAddressLists() {
        return this.possibleOutboundIpAddressLists;
    }
    /**
     * @return A comma separated list of outbound IP addresses - such as `52.23.25.3,52.143.43.12,52.143.43.17` - not all of which are necessarily in use. Superset of `outbound_ip_addresses`.
     * 
     */
    public String possibleOutboundIpAddresses() {
        return this.possibleOutboundIpAddresses;
    }
    public String resourceGroupName() {
        return this.resourceGroupName;
    }
    /**
     * @return A `site_config` block as defined below.
     * 
     */
    public List<GetAppServiceSiteConfig> siteConfigs() {
        return this.siteConfigs;
    }
    public List<GetAppServiceSiteCredential> siteCredentials() {
        return this.siteCredentials;
    }
    /**
     * @return A `source_control` block as defined below.
     * 
     */
    public List<GetAppServiceSourceControl> sourceControls() {
        return this.sourceControls;
    }
    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Map<String,String> tags() {
        return this.tags;
    }

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

    public static Builder builder(GetAppServiceResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String appServicePlanId;
        private Map<String,String> appSettings;
        private Boolean clientAffinityEnabled;
        private Boolean clientCertEnabled;
        private List<GetAppServiceConnectionString> connectionStrings;
        private String customDomainVerificationId;
        private String defaultSiteHostname;
        private Boolean enabled;
        private Boolean httpsOnly;
        private String id;
        private String location;
        private String name;
        private List<String> outboundIpAddressLists;
        private String outboundIpAddresses;
        private List<String> possibleOutboundIpAddressLists;
        private String possibleOutboundIpAddresses;
        private String resourceGroupName;
        private List<GetAppServiceSiteConfig> siteConfigs;
        private List<GetAppServiceSiteCredential> siteCredentials;
        private List<GetAppServiceSourceControl> sourceControls;
        private Map<String,String> tags;
        public Builder() {}
        public Builder(GetAppServiceResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.appServicePlanId = defaults.appServicePlanId;
    	      this.appSettings = defaults.appSettings;
    	      this.clientAffinityEnabled = defaults.clientAffinityEnabled;
    	      this.clientCertEnabled = defaults.clientCertEnabled;
    	      this.connectionStrings = defaults.connectionStrings;
    	      this.customDomainVerificationId = defaults.customDomainVerificationId;
    	      this.defaultSiteHostname = defaults.defaultSiteHostname;
    	      this.enabled = defaults.enabled;
    	      this.httpsOnly = defaults.httpsOnly;
    	      this.id = defaults.id;
    	      this.location = defaults.location;
    	      this.name = defaults.name;
    	      this.outboundIpAddressLists = defaults.outboundIpAddressLists;
    	      this.outboundIpAddresses = defaults.outboundIpAddresses;
    	      this.possibleOutboundIpAddressLists = defaults.possibleOutboundIpAddressLists;
    	      this.possibleOutboundIpAddresses = defaults.possibleOutboundIpAddresses;
    	      this.resourceGroupName = defaults.resourceGroupName;
    	      this.siteConfigs = defaults.siteConfigs;
    	      this.siteCredentials = defaults.siteCredentials;
    	      this.sourceControls = defaults.sourceControls;
    	      this.tags = defaults.tags;
        }

        @CustomType.Setter
        public Builder appServicePlanId(String appServicePlanId) {
            this.appServicePlanId = Objects.requireNonNull(appServicePlanId);
            return this;
        }
        @CustomType.Setter
        public Builder appSettings(Map<String,String> appSettings) {
            this.appSettings = Objects.requireNonNull(appSettings);
            return this;
        }
        @CustomType.Setter
        public Builder clientAffinityEnabled(Boolean clientAffinityEnabled) {
            this.clientAffinityEnabled = Objects.requireNonNull(clientAffinityEnabled);
            return this;
        }
        @CustomType.Setter
        public Builder clientCertEnabled(Boolean clientCertEnabled) {
            this.clientCertEnabled = Objects.requireNonNull(clientCertEnabled);
            return this;
        }
        @CustomType.Setter
        public Builder connectionStrings(List<GetAppServiceConnectionString> connectionStrings) {
            this.connectionStrings = Objects.requireNonNull(connectionStrings);
            return this;
        }
        public Builder connectionStrings(GetAppServiceConnectionString... connectionStrings) {
            return connectionStrings(List.of(connectionStrings));
        }
        @CustomType.Setter
        public Builder customDomainVerificationId(String customDomainVerificationId) {
            this.customDomainVerificationId = Objects.requireNonNull(customDomainVerificationId);
            return this;
        }
        @CustomType.Setter
        public Builder defaultSiteHostname(String defaultSiteHostname) {
            this.defaultSiteHostname = Objects.requireNonNull(defaultSiteHostname);
            return this;
        }
        @CustomType.Setter
        public Builder enabled(Boolean enabled) {
            this.enabled = Objects.requireNonNull(enabled);
            return this;
        }
        @CustomType.Setter
        public Builder httpsOnly(Boolean httpsOnly) {
            this.httpsOnly = Objects.requireNonNull(httpsOnly);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder location(String location) {
            this.location = Objects.requireNonNull(location);
            return this;
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder outboundIpAddressLists(List<String> outboundIpAddressLists) {
            this.outboundIpAddressLists = Objects.requireNonNull(outboundIpAddressLists);
            return this;
        }
        public Builder outboundIpAddressLists(String... outboundIpAddressLists) {
            return outboundIpAddressLists(List.of(outboundIpAddressLists));
        }
        @CustomType.Setter
        public Builder outboundIpAddresses(String outboundIpAddresses) {
            this.outboundIpAddresses = Objects.requireNonNull(outboundIpAddresses);
            return this;
        }
        @CustomType.Setter
        public Builder possibleOutboundIpAddressLists(List<String> possibleOutboundIpAddressLists) {
            this.possibleOutboundIpAddressLists = Objects.requireNonNull(possibleOutboundIpAddressLists);
            return this;
        }
        public Builder possibleOutboundIpAddressLists(String... possibleOutboundIpAddressLists) {
            return possibleOutboundIpAddressLists(List.of(possibleOutboundIpAddressLists));
        }
        @CustomType.Setter
        public Builder possibleOutboundIpAddresses(String possibleOutboundIpAddresses) {
            this.possibleOutboundIpAddresses = Objects.requireNonNull(possibleOutboundIpAddresses);
            return this;
        }
        @CustomType.Setter
        public Builder resourceGroupName(String resourceGroupName) {
            this.resourceGroupName = Objects.requireNonNull(resourceGroupName);
            return this;
        }
        @CustomType.Setter
        public Builder siteConfigs(List<GetAppServiceSiteConfig> siteConfigs) {
            this.siteConfigs = Objects.requireNonNull(siteConfigs);
            return this;
        }
        public Builder siteConfigs(GetAppServiceSiteConfig... siteConfigs) {
            return siteConfigs(List.of(siteConfigs));
        }
        @CustomType.Setter
        public Builder siteCredentials(List<GetAppServiceSiteCredential> siteCredentials) {
            this.siteCredentials = Objects.requireNonNull(siteCredentials);
            return this;
        }
        public Builder siteCredentials(GetAppServiceSiteCredential... siteCredentials) {
            return siteCredentials(List.of(siteCredentials));
        }
        @CustomType.Setter
        public Builder sourceControls(List<GetAppServiceSourceControl> sourceControls) {
            this.sourceControls = Objects.requireNonNull(sourceControls);
            return this;
        }
        public Builder sourceControls(GetAppServiceSourceControl... sourceControls) {
            return sourceControls(List.of(sourceControls));
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        public GetAppServiceResult build() {
            final var o = new GetAppServiceResult();
            o.appServicePlanId = appServicePlanId;
            o.appSettings = appSettings;
            o.clientAffinityEnabled = clientAffinityEnabled;
            o.clientCertEnabled = clientCertEnabled;
            o.connectionStrings = connectionStrings;
            o.customDomainVerificationId = customDomainVerificationId;
            o.defaultSiteHostname = defaultSiteHostname;
            o.enabled = enabled;
            o.httpsOnly = httpsOnly;
            o.id = id;
            o.location = location;
            o.name = name;
            o.outboundIpAddressLists = outboundIpAddressLists;
            o.outboundIpAddresses = outboundIpAddresses;
            o.possibleOutboundIpAddressLists = possibleOutboundIpAddressLists;
            o.possibleOutboundIpAddresses = possibleOutboundIpAddresses;
            o.resourceGroupName = resourceGroupName;
            o.siteConfigs = siteConfigs;
            o.siteCredentials = siteCredentials;
            o.sourceControls = sourceControls;
            o.tags = tags;
            return o;
        }
    }
}
