// *** 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.GetCertificateOrderCertificate;
import com.pulumi.core.annotations.CustomType;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;

@CustomType
public final class GetCertificateOrderResult {
    /**
     * @return Reasons why App Service Certificate is not renewable at the current moment.
     * 
     */
    private List<String> appServiceCertificateNotRenewableReasons;
    /**
     * @return true if the certificate should be automatically renewed when it expires; otherwise, false.
     * 
     */
    private Boolean autoRenew;
    /**
     * @return State of the Key Vault secret. A `certificates` block as defined below.
     * 
     */
    private List<GetCertificateOrderCertificate> certificates;
    /**
     * @return Last CSR that was created for this order.
     * 
     */
    private String csr;
    /**
     * @return The Distinguished Name for the App Service Certificate Order.
     * 
     */
    private String distinguishedName;
    /**
     * @return Domain verification token.
     * 
     */
    private String domainVerificationToken;
    /**
     * @return Certificate expiration time.
     * 
     */
    private String expirationTime;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    /**
     * @return Certificate thumbprint intermediate certificate.
     * 
     */
    private String intermediateThumbprint;
    /**
     * @return Whether the private key is external or not.
     * 
     */
    private Boolean isPrivateKeyExternal;
    /**
     * @return Certificate key size.
     * 
     */
    private Integer keySize;
    /**
     * @return The Azure location where the App Service exists.
     * 
     */
    private String location;
    private String name;
    /**
     * @return Certificate product type, such as `Standard` or `WildCard`.
     * 
     */
    private String productType;
    private String resourceGroupName;
    /**
     * @return Certificate thumbprint for root certificate.
     * 
     */
    private String rootThumbprint;
    /**
     * @return Certificate thumbprint for signed certificate.
     * 
     */
    private String signedCertificateThumbprint;
    /**
     * @return Current order status.
     * 
     */
    private String status;
    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    private Map<String,String> tags;
    /**
     * @return Duration in years (must be between 1 and 3).
     * 
     */
    private Integer validityInYears;

    private GetCertificateOrderResult() {}
    /**
     * @return Reasons why App Service Certificate is not renewable at the current moment.
     * 
     */
    public List<String> appServiceCertificateNotRenewableReasons() {
        return this.appServiceCertificateNotRenewableReasons;
    }
    /**
     * @return true if the certificate should be automatically renewed when it expires; otherwise, false.
     * 
     */
    public Boolean autoRenew() {
        return this.autoRenew;
    }
    /**
     * @return State of the Key Vault secret. A `certificates` block as defined below.
     * 
     */
    public List<GetCertificateOrderCertificate> certificates() {
        return this.certificates;
    }
    /**
     * @return Last CSR that was created for this order.
     * 
     */
    public String csr() {
        return this.csr;
    }
    /**
     * @return The Distinguished Name for the App Service Certificate Order.
     * 
     */
    public String distinguishedName() {
        return this.distinguishedName;
    }
    /**
     * @return Domain verification token.
     * 
     */
    public String domainVerificationToken() {
        return this.domainVerificationToken;
    }
    /**
     * @return Certificate expiration time.
     * 
     */
    public String expirationTime() {
        return this.expirationTime;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return Certificate thumbprint intermediate certificate.
     * 
     */
    public String intermediateThumbprint() {
        return this.intermediateThumbprint;
    }
    /**
     * @return Whether the private key is external or not.
     * 
     */
    public Boolean isPrivateKeyExternal() {
        return this.isPrivateKeyExternal;
    }
    /**
     * @return Certificate key size.
     * 
     */
    public Integer keySize() {
        return this.keySize;
    }
    /**
     * @return The Azure location where the App Service exists.
     * 
     */
    public String location() {
        return this.location;
    }
    public String name() {
        return this.name;
    }
    /**
     * @return Certificate product type, such as `Standard` or `WildCard`.
     * 
     */
    public String productType() {
        return this.productType;
    }
    public String resourceGroupName() {
        return this.resourceGroupName;
    }
    /**
     * @return Certificate thumbprint for root certificate.
     * 
     */
    public String rootThumbprint() {
        return this.rootThumbprint;
    }
    /**
     * @return Certificate thumbprint for signed certificate.
     * 
     */
    public String signedCertificateThumbprint() {
        return this.signedCertificateThumbprint;
    }
    /**
     * @return Current order status.
     * 
     */
    public String status() {
        return this.status;
    }
    /**
     * @return A mapping of tags to assign to the resource.
     * 
     */
    public Map<String,String> tags() {
        return this.tags;
    }
    /**
     * @return Duration in years (must be between 1 and 3).
     * 
     */
    public Integer validityInYears() {
        return this.validityInYears;
    }

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

    public static Builder builder(GetCertificateOrderResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<String> appServiceCertificateNotRenewableReasons;
        private Boolean autoRenew;
        private List<GetCertificateOrderCertificate> certificates;
        private String csr;
        private String distinguishedName;
        private String domainVerificationToken;
        private String expirationTime;
        private String id;
        private String intermediateThumbprint;
        private Boolean isPrivateKeyExternal;
        private Integer keySize;
        private String location;
        private String name;
        private String productType;
        private String resourceGroupName;
        private String rootThumbprint;
        private String signedCertificateThumbprint;
        private String status;
        private Map<String,String> tags;
        private Integer validityInYears;
        public Builder() {}
        public Builder(GetCertificateOrderResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.appServiceCertificateNotRenewableReasons = defaults.appServiceCertificateNotRenewableReasons;
    	      this.autoRenew = defaults.autoRenew;
    	      this.certificates = defaults.certificates;
    	      this.csr = defaults.csr;
    	      this.distinguishedName = defaults.distinguishedName;
    	      this.domainVerificationToken = defaults.domainVerificationToken;
    	      this.expirationTime = defaults.expirationTime;
    	      this.id = defaults.id;
    	      this.intermediateThumbprint = defaults.intermediateThumbprint;
    	      this.isPrivateKeyExternal = defaults.isPrivateKeyExternal;
    	      this.keySize = defaults.keySize;
    	      this.location = defaults.location;
    	      this.name = defaults.name;
    	      this.productType = defaults.productType;
    	      this.resourceGroupName = defaults.resourceGroupName;
    	      this.rootThumbprint = defaults.rootThumbprint;
    	      this.signedCertificateThumbprint = defaults.signedCertificateThumbprint;
    	      this.status = defaults.status;
    	      this.tags = defaults.tags;
    	      this.validityInYears = defaults.validityInYears;
        }

        @CustomType.Setter
        public Builder appServiceCertificateNotRenewableReasons(List<String> appServiceCertificateNotRenewableReasons) {
            this.appServiceCertificateNotRenewableReasons = Objects.requireNonNull(appServiceCertificateNotRenewableReasons);
            return this;
        }
        public Builder appServiceCertificateNotRenewableReasons(String... appServiceCertificateNotRenewableReasons) {
            return appServiceCertificateNotRenewableReasons(List.of(appServiceCertificateNotRenewableReasons));
        }
        @CustomType.Setter
        public Builder autoRenew(Boolean autoRenew) {
            this.autoRenew = Objects.requireNonNull(autoRenew);
            return this;
        }
        @CustomType.Setter
        public Builder certificates(List<GetCertificateOrderCertificate> certificates) {
            this.certificates = Objects.requireNonNull(certificates);
            return this;
        }
        public Builder certificates(GetCertificateOrderCertificate... certificates) {
            return certificates(List.of(certificates));
        }
        @CustomType.Setter
        public Builder csr(String csr) {
            this.csr = Objects.requireNonNull(csr);
            return this;
        }
        @CustomType.Setter
        public Builder distinguishedName(String distinguishedName) {
            this.distinguishedName = Objects.requireNonNull(distinguishedName);
            return this;
        }
        @CustomType.Setter
        public Builder domainVerificationToken(String domainVerificationToken) {
            this.domainVerificationToken = Objects.requireNonNull(domainVerificationToken);
            return this;
        }
        @CustomType.Setter
        public Builder expirationTime(String expirationTime) {
            this.expirationTime = Objects.requireNonNull(expirationTime);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder intermediateThumbprint(String intermediateThumbprint) {
            this.intermediateThumbprint = Objects.requireNonNull(intermediateThumbprint);
            return this;
        }
        @CustomType.Setter
        public Builder isPrivateKeyExternal(Boolean isPrivateKeyExternal) {
            this.isPrivateKeyExternal = Objects.requireNonNull(isPrivateKeyExternal);
            return this;
        }
        @CustomType.Setter
        public Builder keySize(Integer keySize) {
            this.keySize = Objects.requireNonNull(keySize);
            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 productType(String productType) {
            this.productType = Objects.requireNonNull(productType);
            return this;
        }
        @CustomType.Setter
        public Builder resourceGroupName(String resourceGroupName) {
            this.resourceGroupName = Objects.requireNonNull(resourceGroupName);
            return this;
        }
        @CustomType.Setter
        public Builder rootThumbprint(String rootThumbprint) {
            this.rootThumbprint = Objects.requireNonNull(rootThumbprint);
            return this;
        }
        @CustomType.Setter
        public Builder signedCertificateThumbprint(String signedCertificateThumbprint) {
            this.signedCertificateThumbprint = Objects.requireNonNull(signedCertificateThumbprint);
            return this;
        }
        @CustomType.Setter
        public Builder status(String status) {
            this.status = Objects.requireNonNull(status);
            return this;
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        @CustomType.Setter
        public Builder validityInYears(Integer validityInYears) {
            this.validityInYears = Objects.requireNonNull(validityInYears);
            return this;
        }
        public GetCertificateOrderResult build() {
            final var o = new GetCertificateOrderResult();
            o.appServiceCertificateNotRenewableReasons = appServiceCertificateNotRenewableReasons;
            o.autoRenew = autoRenew;
            o.certificates = certificates;
            o.csr = csr;
            o.distinguishedName = distinguishedName;
            o.domainVerificationToken = domainVerificationToken;
            o.expirationTime = expirationTime;
            o.id = id;
            o.intermediateThumbprint = intermediateThumbprint;
            o.isPrivateKeyExternal = isPrivateKeyExternal;
            o.keySize = keySize;
            o.location = location;
            o.name = name;
            o.productType = productType;
            o.resourceGroupName = resourceGroupName;
            o.rootThumbprint = rootThumbprint;
            o.signedCertificateThumbprint = signedCertificateThumbprint;
            o.status = status;
            o.tags = tags;
            o.validityInYears = validityInYears;
            return o;
        }
    }
}
