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

import com.pulumi.core.annotations.CustomType;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class GetSubscriptionResult {
    /**
     * @return The idle interval after which the topic is automatically deleted.
     * 
     */
    private String autoDeleteOnIdle;
    /**
     * @return Does the ServiceBus Subscription have dead letter support on filter evaluation exceptions?
     * 
     */
    private Boolean deadLetteringOnFilterEvaluationError;
    /**
     * @return Does the Service Bus Subscription have dead letter support when a message expires?
     * 
     */
    private Boolean deadLetteringOnMessageExpiration;
    /**
     * @return The Default message timespan to live. This is the duration after which the message expires, starting from when the message is sent to Service Bus. This is the default value used when TimeToLive is not set on a message itself.
     * 
     */
    private String defaultMessageTtl;
    /**
     * @return Are batched operations enabled on this ServiceBus Subscription?
     * 
     */
    private Boolean enableBatchedOperations;
    /**
     * @return The name of a Queue or Topic to automatically forward Dead Letter messages to.
     * 
     */
    private String forwardDeadLetteredMessagesTo;
    /**
     * @return The name of a ServiceBus Queue or ServiceBus Topic where messages are automatically forwarded.
     * 
     */
    private String forwardTo;
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    private String id;
    /**
     * @return The lock duration for the subscription.
     * 
     */
    private String lockDuration;
    /**
     * @return The maximum number of deliveries.
     * 
     */
    private Integer maxDeliveryCount;
    private String name;
    /**
     * @deprecated
     * `namespace_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `namespace_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    private @Nullable String namespaceName;
    /**
     * @return Whether or not this ServiceBus Subscription supports session.
     * 
     */
    private Boolean requiresSession;
    /**
     * @deprecated
     * `resource_group_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `resource_group_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    private @Nullable String resourceGroupName;
    private @Nullable String topicId;
    /**
     * @deprecated
     * `topic_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `topic_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    private @Nullable String topicName;

    private GetSubscriptionResult() {}
    /**
     * @return The idle interval after which the topic is automatically deleted.
     * 
     */
    public String autoDeleteOnIdle() {
        return this.autoDeleteOnIdle;
    }
    /**
     * @return Does the ServiceBus Subscription have dead letter support on filter evaluation exceptions?
     * 
     */
    public Boolean deadLetteringOnFilterEvaluationError() {
        return this.deadLetteringOnFilterEvaluationError;
    }
    /**
     * @return Does the Service Bus Subscription have dead letter support when a message expires?
     * 
     */
    public Boolean deadLetteringOnMessageExpiration() {
        return this.deadLetteringOnMessageExpiration;
    }
    /**
     * @return The Default message timespan to live. This is the duration after which the message expires, starting from when the message is sent to Service Bus. This is the default value used when TimeToLive is not set on a message itself.
     * 
     */
    public String defaultMessageTtl() {
        return this.defaultMessageTtl;
    }
    /**
     * @return Are batched operations enabled on this ServiceBus Subscription?
     * 
     */
    public Boolean enableBatchedOperations() {
        return this.enableBatchedOperations;
    }
    /**
     * @return The name of a Queue or Topic to automatically forward Dead Letter messages to.
     * 
     */
    public String forwardDeadLetteredMessagesTo() {
        return this.forwardDeadLetteredMessagesTo;
    }
    /**
     * @return The name of a ServiceBus Queue or ServiceBus Topic where messages are automatically forwarded.
     * 
     */
    public String forwardTo() {
        return this.forwardTo;
    }
    /**
     * @return The provider-assigned unique ID for this managed resource.
     * 
     */
    public String id() {
        return this.id;
    }
    /**
     * @return The lock duration for the subscription.
     * 
     */
    public String lockDuration() {
        return this.lockDuration;
    }
    /**
     * @return The maximum number of deliveries.
     * 
     */
    public Integer maxDeliveryCount() {
        return this.maxDeliveryCount;
    }
    public String name() {
        return this.name;
    }
    /**
     * @deprecated
     * `namespace_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `namespace_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    public Optional<String> namespaceName() {
        return Optional.ofNullable(this.namespaceName);
    }
    /**
     * @return Whether or not this ServiceBus Subscription supports session.
     * 
     */
    public Boolean requiresSession() {
        return this.requiresSession;
    }
    /**
     * @deprecated
     * `resource_group_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `resource_group_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    public Optional<String> resourceGroupName() {
        return Optional.ofNullable(this.resourceGroupName);
    }
    public Optional<String> topicId() {
        return Optional.ofNullable(this.topicId);
    }
    /**
     * @deprecated
     * `topic_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider.
     * 
     */
    @Deprecated /* `topic_name` will be removed in favour of the property `topic_id` in version 4.0 of the AzureRM Provider. */
    public Optional<String> topicName() {
        return Optional.ofNullable(this.topicName);
    }

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

    public static Builder builder(GetSubscriptionResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String autoDeleteOnIdle;
        private Boolean deadLetteringOnFilterEvaluationError;
        private Boolean deadLetteringOnMessageExpiration;
        private String defaultMessageTtl;
        private Boolean enableBatchedOperations;
        private String forwardDeadLetteredMessagesTo;
        private String forwardTo;
        private String id;
        private String lockDuration;
        private Integer maxDeliveryCount;
        private String name;
        private @Nullable String namespaceName;
        private Boolean requiresSession;
        private @Nullable String resourceGroupName;
        private @Nullable String topicId;
        private @Nullable String topicName;
        public Builder() {}
        public Builder(GetSubscriptionResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.autoDeleteOnIdle = defaults.autoDeleteOnIdle;
    	      this.deadLetteringOnFilterEvaluationError = defaults.deadLetteringOnFilterEvaluationError;
    	      this.deadLetteringOnMessageExpiration = defaults.deadLetteringOnMessageExpiration;
    	      this.defaultMessageTtl = defaults.defaultMessageTtl;
    	      this.enableBatchedOperations = defaults.enableBatchedOperations;
    	      this.forwardDeadLetteredMessagesTo = defaults.forwardDeadLetteredMessagesTo;
    	      this.forwardTo = defaults.forwardTo;
    	      this.id = defaults.id;
    	      this.lockDuration = defaults.lockDuration;
    	      this.maxDeliveryCount = defaults.maxDeliveryCount;
    	      this.name = defaults.name;
    	      this.namespaceName = defaults.namespaceName;
    	      this.requiresSession = defaults.requiresSession;
    	      this.resourceGroupName = defaults.resourceGroupName;
    	      this.topicId = defaults.topicId;
    	      this.topicName = defaults.topicName;
        }

        @CustomType.Setter
        public Builder autoDeleteOnIdle(String autoDeleteOnIdle) {
            this.autoDeleteOnIdle = Objects.requireNonNull(autoDeleteOnIdle);
            return this;
        }
        @CustomType.Setter
        public Builder deadLetteringOnFilterEvaluationError(Boolean deadLetteringOnFilterEvaluationError) {
            this.deadLetteringOnFilterEvaluationError = Objects.requireNonNull(deadLetteringOnFilterEvaluationError);
            return this;
        }
        @CustomType.Setter
        public Builder deadLetteringOnMessageExpiration(Boolean deadLetteringOnMessageExpiration) {
            this.deadLetteringOnMessageExpiration = Objects.requireNonNull(deadLetteringOnMessageExpiration);
            return this;
        }
        @CustomType.Setter
        public Builder defaultMessageTtl(String defaultMessageTtl) {
            this.defaultMessageTtl = Objects.requireNonNull(defaultMessageTtl);
            return this;
        }
        @CustomType.Setter
        public Builder enableBatchedOperations(Boolean enableBatchedOperations) {
            this.enableBatchedOperations = Objects.requireNonNull(enableBatchedOperations);
            return this;
        }
        @CustomType.Setter
        public Builder forwardDeadLetteredMessagesTo(String forwardDeadLetteredMessagesTo) {
            this.forwardDeadLetteredMessagesTo = Objects.requireNonNull(forwardDeadLetteredMessagesTo);
            return this;
        }
        @CustomType.Setter
        public Builder forwardTo(String forwardTo) {
            this.forwardTo = Objects.requireNonNull(forwardTo);
            return this;
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder lockDuration(String lockDuration) {
            this.lockDuration = Objects.requireNonNull(lockDuration);
            return this;
        }
        @CustomType.Setter
        public Builder maxDeliveryCount(Integer maxDeliveryCount) {
            this.maxDeliveryCount = Objects.requireNonNull(maxDeliveryCount);
            return this;
        }
        @CustomType.Setter
        public Builder name(String name) {
            this.name = Objects.requireNonNull(name);
            return this;
        }
        @CustomType.Setter
        public Builder namespaceName(@Nullable String namespaceName) {
            this.namespaceName = namespaceName;
            return this;
        }
        @CustomType.Setter
        public Builder requiresSession(Boolean requiresSession) {
            this.requiresSession = Objects.requireNonNull(requiresSession);
            return this;
        }
        @CustomType.Setter
        public Builder resourceGroupName(@Nullable String resourceGroupName) {
            this.resourceGroupName = resourceGroupName;
            return this;
        }
        @CustomType.Setter
        public Builder topicId(@Nullable String topicId) {
            this.topicId = topicId;
            return this;
        }
        @CustomType.Setter
        public Builder topicName(@Nullable String topicName) {
            this.topicName = topicName;
            return this;
        }
        public GetSubscriptionResult build() {
            final var o = new GetSubscriptionResult();
            o.autoDeleteOnIdle = autoDeleteOnIdle;
            o.deadLetteringOnFilterEvaluationError = deadLetteringOnFilterEvaluationError;
            o.deadLetteringOnMessageExpiration = deadLetteringOnMessageExpiration;
            o.defaultMessageTtl = defaultMessageTtl;
            o.enableBatchedOperations = enableBatchedOperations;
            o.forwardDeadLetteredMessagesTo = forwardDeadLetteredMessagesTo;
            o.forwardTo = forwardTo;
            o.id = id;
            o.lockDuration = lockDuration;
            o.maxDeliveryCount = maxDeliveryCount;
            o.name = name;
            o.namespaceName = namespaceName;
            o.requiresSession = requiresSession;
            o.resourceGroupName = resourceGroupName;
            o.topicId = topicId;
            o.topicName = topicName;
            return o;
        }
    }
}
