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

import com.pulumi.aws.kinesis.outputs.FirehoseDeliveryStreamSplunkConfigurationCloudwatchLoggingOptions;
import com.pulumi.aws.kinesis.outputs.FirehoseDeliveryStreamSplunkConfigurationProcessingConfiguration;
import com.pulumi.core.annotations.CustomType;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class FirehoseDeliveryStreamSplunkConfiguration {
    /**
     * @return The CloudWatch Logging Options for the delivery stream. More details are given below.
     * 
     */
    private @Nullable FirehoseDeliveryStreamSplunkConfigurationCloudwatchLoggingOptions cloudwatchLoggingOptions;
    /**
     * @return The amount of time, in seconds between 180 and 600, that Kinesis Firehose waits to receive an acknowledgment from Splunk after it sends it data.
     * 
     */
    private @Nullable Integer hecAcknowledgmentTimeout;
    /**
     * @return The HTTP Event Collector (HEC) endpoint to which Kinesis Firehose sends your data.
     * 
     */
    private String hecEndpoint;
    /**
     * @return The HEC endpoint type. Valid values are `Raw` or `Event`. The default value is `Raw`.
     * 
     */
    private @Nullable String hecEndpointType;
    /**
     * @return The GUID that you obtain from your Splunk cluster when you create a new HEC endpoint.
     * 
     */
    private String hecToken;
    /**
     * @return The data processing configuration.  More details are given below.
     * 
     */
    private @Nullable FirehoseDeliveryStreamSplunkConfigurationProcessingConfiguration processingConfiguration;
    /**
     * @return After an initial failure to deliver to Splunk, the total amount of time, in seconds between 0 to 7200, during which Firehose re-attempts delivery (including the first attempt).  After this time has elapsed, the failed documents are written to Amazon S3.  The default value is 300s.  There will be no retry if the value is 0.
     * 
     */
    private @Nullable Integer retryDuration;
    /**
     * @return Defines how documents should be delivered to Amazon S3.  Valid values are `FailedEventsOnly` and `AllEvents`.  Default value is `FailedEventsOnly`.
     * 
     */
    private @Nullable String s3BackupMode;

    private FirehoseDeliveryStreamSplunkConfiguration() {}
    /**
     * @return The CloudWatch Logging Options for the delivery stream. More details are given below.
     * 
     */
    public Optional<FirehoseDeliveryStreamSplunkConfigurationCloudwatchLoggingOptions> cloudwatchLoggingOptions() {
        return Optional.ofNullable(this.cloudwatchLoggingOptions);
    }
    /**
     * @return The amount of time, in seconds between 180 and 600, that Kinesis Firehose waits to receive an acknowledgment from Splunk after it sends it data.
     * 
     */
    public Optional<Integer> hecAcknowledgmentTimeout() {
        return Optional.ofNullable(this.hecAcknowledgmentTimeout);
    }
    /**
     * @return The HTTP Event Collector (HEC) endpoint to which Kinesis Firehose sends your data.
     * 
     */
    public String hecEndpoint() {
        return this.hecEndpoint;
    }
    /**
     * @return The HEC endpoint type. Valid values are `Raw` or `Event`. The default value is `Raw`.
     * 
     */
    public Optional<String> hecEndpointType() {
        return Optional.ofNullable(this.hecEndpointType);
    }
    /**
     * @return The GUID that you obtain from your Splunk cluster when you create a new HEC endpoint.
     * 
     */
    public String hecToken() {
        return this.hecToken;
    }
    /**
     * @return The data processing configuration.  More details are given below.
     * 
     */
    public Optional<FirehoseDeliveryStreamSplunkConfigurationProcessingConfiguration> processingConfiguration() {
        return Optional.ofNullable(this.processingConfiguration);
    }
    /**
     * @return After an initial failure to deliver to Splunk, the total amount of time, in seconds between 0 to 7200, during which Firehose re-attempts delivery (including the first attempt).  After this time has elapsed, the failed documents are written to Amazon S3.  The default value is 300s.  There will be no retry if the value is 0.
     * 
     */
    public Optional<Integer> retryDuration() {
        return Optional.ofNullable(this.retryDuration);
    }
    /**
     * @return Defines how documents should be delivered to Amazon S3.  Valid values are `FailedEventsOnly` and `AllEvents`.  Default value is `FailedEventsOnly`.
     * 
     */
    public Optional<String> s3BackupMode() {
        return Optional.ofNullable(this.s3BackupMode);
    }

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

    public static Builder builder(FirehoseDeliveryStreamSplunkConfiguration defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable FirehoseDeliveryStreamSplunkConfigurationCloudwatchLoggingOptions cloudwatchLoggingOptions;
        private @Nullable Integer hecAcknowledgmentTimeout;
        private String hecEndpoint;
        private @Nullable String hecEndpointType;
        private String hecToken;
        private @Nullable FirehoseDeliveryStreamSplunkConfigurationProcessingConfiguration processingConfiguration;
        private @Nullable Integer retryDuration;
        private @Nullable String s3BackupMode;
        public Builder() {}
        public Builder(FirehoseDeliveryStreamSplunkConfiguration defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.cloudwatchLoggingOptions = defaults.cloudwatchLoggingOptions;
    	      this.hecAcknowledgmentTimeout = defaults.hecAcknowledgmentTimeout;
    	      this.hecEndpoint = defaults.hecEndpoint;
    	      this.hecEndpointType = defaults.hecEndpointType;
    	      this.hecToken = defaults.hecToken;
    	      this.processingConfiguration = defaults.processingConfiguration;
    	      this.retryDuration = defaults.retryDuration;
    	      this.s3BackupMode = defaults.s3BackupMode;
        }

        @CustomType.Setter
        public Builder cloudwatchLoggingOptions(@Nullable FirehoseDeliveryStreamSplunkConfigurationCloudwatchLoggingOptions cloudwatchLoggingOptions) {
            this.cloudwatchLoggingOptions = cloudwatchLoggingOptions;
            return this;
        }
        @CustomType.Setter
        public Builder hecAcknowledgmentTimeout(@Nullable Integer hecAcknowledgmentTimeout) {
            this.hecAcknowledgmentTimeout = hecAcknowledgmentTimeout;
            return this;
        }
        @CustomType.Setter
        public Builder hecEndpoint(String hecEndpoint) {
            this.hecEndpoint = Objects.requireNonNull(hecEndpoint);
            return this;
        }
        @CustomType.Setter
        public Builder hecEndpointType(@Nullable String hecEndpointType) {
            this.hecEndpointType = hecEndpointType;
            return this;
        }
        @CustomType.Setter
        public Builder hecToken(String hecToken) {
            this.hecToken = Objects.requireNonNull(hecToken);
            return this;
        }
        @CustomType.Setter
        public Builder processingConfiguration(@Nullable FirehoseDeliveryStreamSplunkConfigurationProcessingConfiguration processingConfiguration) {
            this.processingConfiguration = processingConfiguration;
            return this;
        }
        @CustomType.Setter
        public Builder retryDuration(@Nullable Integer retryDuration) {
            this.retryDuration = retryDuration;
            return this;
        }
        @CustomType.Setter
        public Builder s3BackupMode(@Nullable String s3BackupMode) {
            this.s3BackupMode = s3BackupMode;
            return this;
        }
        public FirehoseDeliveryStreamSplunkConfiguration build() {
            final var o = new FirehoseDeliveryStreamSplunkConfiguration();
            o.cloudwatchLoggingOptions = cloudwatchLoggingOptions;
            o.hecAcknowledgmentTimeout = hecAcknowledgmentTimeout;
            o.hecEndpoint = hecEndpoint;
            o.hecEndpointType = hecEndpointType;
            o.hecToken = hecToken;
            o.processingConfiguration = processingConfiguration;
            o.retryDuration = retryDuration;
            o.s3BackupMode = s3BackupMode;
            return o;
        }
    }
}
