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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final EndpointEventGridArgs Empty = new EndpointEventGridArgs();

    /**
     * The storage secret of the dead-lettering, whose format is `https://&lt;storageAccountname&gt;.blob.core.windows.net/&lt;containerName&gt;?&lt;SASToken&gt;`. When an endpoint can&#39;t deliver an event within a certain time period or after trying to deliver the event a certain number of times, it can send the undelivered event to a storage account.
     * 
     */
    @Import(name="deadLetterStorageSecret")
    private @Nullable Output<String> deadLetterStorageSecret;

    /**
     * @return The storage secret of the dead-lettering, whose format is `https://&lt;storageAccountname&gt;.blob.core.windows.net/&lt;containerName&gt;?&lt;SASToken&gt;`. When an endpoint can&#39;t deliver an event within a certain time period or after trying to deliver the event a certain number of times, it can send the undelivered event to a storage account.
     * 
     */
    public Optional<Output<String>> deadLetterStorageSecret() {
        return Optional.ofNullable(this.deadLetterStorageSecret);
    }

    /**
     * The resource ID of the Digital Twins Instance. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
     * 
     */
    @Import(name="digitalTwinsId", required=true)
    private Output<String> digitalTwinsId;

    /**
     * @return The resource ID of the Digital Twins Instance. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
     * 
     */
    public Output<String> digitalTwinsId() {
        return this.digitalTwinsId;
    }

    /**
     * The endpoint of the Event Grid Topic.
     * 
     */
    @Import(name="eventgridTopicEndpoint", required=true)
    private Output<String> eventgridTopicEndpoint;

    /**
     * @return The endpoint of the Event Grid Topic.
     * 
     */
    public Output<String> eventgridTopicEndpoint() {
        return this.eventgridTopicEndpoint;
    }

    /**
     * The primary access key of the Event Grid Topic.
     * 
     */
    @Import(name="eventgridTopicPrimaryAccessKey", required=true)
    private Output<String> eventgridTopicPrimaryAccessKey;

    /**
     * @return The primary access key of the Event Grid Topic.
     * 
     */
    public Output<String> eventgridTopicPrimaryAccessKey() {
        return this.eventgridTopicPrimaryAccessKey;
    }

    /**
     * The secondary access key of the Event Grid Topic.
     * 
     */
    @Import(name="eventgridTopicSecondaryAccessKey", required=true)
    private Output<String> eventgridTopicSecondaryAccessKey;

    /**
     * @return The secondary access key of the Event Grid Topic.
     * 
     */
    public Output<String> eventgridTopicSecondaryAccessKey() {
        return this.eventgridTopicSecondaryAccessKey;
    }

    /**
     * The name which should be used for this Digital Twins Eventgrid Endpoint. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
     * 
     */
    @Import(name="name")
    private @Nullable Output<String> name;

    /**
     * @return The name which should be used for this Digital Twins Eventgrid Endpoint. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
     * 
     */
    public Optional<Output<String>> name() {
        return Optional.ofNullable(this.name);
    }

    private EndpointEventGridArgs() {}

    private EndpointEventGridArgs(EndpointEventGridArgs $) {
        this.deadLetterStorageSecret = $.deadLetterStorageSecret;
        this.digitalTwinsId = $.digitalTwinsId;
        this.eventgridTopicEndpoint = $.eventgridTopicEndpoint;
        this.eventgridTopicPrimaryAccessKey = $.eventgridTopicPrimaryAccessKey;
        this.eventgridTopicSecondaryAccessKey = $.eventgridTopicSecondaryAccessKey;
        this.name = $.name;
    }

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

    public static final class Builder {
        private EndpointEventGridArgs $;

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

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

        /**
         * @param deadLetterStorageSecret The storage secret of the dead-lettering, whose format is `https://&lt;storageAccountname&gt;.blob.core.windows.net/&lt;containerName&gt;?&lt;SASToken&gt;`. When an endpoint can&#39;t deliver an event within a certain time period or after trying to deliver the event a certain number of times, it can send the undelivered event to a storage account.
         * 
         * @return builder
         * 
         */
        public Builder deadLetterStorageSecret(@Nullable Output<String> deadLetterStorageSecret) {
            $.deadLetterStorageSecret = deadLetterStorageSecret;
            return this;
        }

        /**
         * @param deadLetterStorageSecret The storage secret of the dead-lettering, whose format is `https://&lt;storageAccountname&gt;.blob.core.windows.net/&lt;containerName&gt;?&lt;SASToken&gt;`. When an endpoint can&#39;t deliver an event within a certain time period or after trying to deliver the event a certain number of times, it can send the undelivered event to a storage account.
         * 
         * @return builder
         * 
         */
        public Builder deadLetterStorageSecret(String deadLetterStorageSecret) {
            return deadLetterStorageSecret(Output.of(deadLetterStorageSecret));
        }

        /**
         * @param digitalTwinsId The resource ID of the Digital Twins Instance. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
         * 
         * @return builder
         * 
         */
        public Builder digitalTwinsId(Output<String> digitalTwinsId) {
            $.digitalTwinsId = digitalTwinsId;
            return this;
        }

        /**
         * @param digitalTwinsId The resource ID of the Digital Twins Instance. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
         * 
         * @return builder
         * 
         */
        public Builder digitalTwinsId(String digitalTwinsId) {
            return digitalTwinsId(Output.of(digitalTwinsId));
        }

        /**
         * @param eventgridTopicEndpoint The endpoint of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicEndpoint(Output<String> eventgridTopicEndpoint) {
            $.eventgridTopicEndpoint = eventgridTopicEndpoint;
            return this;
        }

        /**
         * @param eventgridTopicEndpoint The endpoint of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicEndpoint(String eventgridTopicEndpoint) {
            return eventgridTopicEndpoint(Output.of(eventgridTopicEndpoint));
        }

        /**
         * @param eventgridTopicPrimaryAccessKey The primary access key of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicPrimaryAccessKey(Output<String> eventgridTopicPrimaryAccessKey) {
            $.eventgridTopicPrimaryAccessKey = eventgridTopicPrimaryAccessKey;
            return this;
        }

        /**
         * @param eventgridTopicPrimaryAccessKey The primary access key of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicPrimaryAccessKey(String eventgridTopicPrimaryAccessKey) {
            return eventgridTopicPrimaryAccessKey(Output.of(eventgridTopicPrimaryAccessKey));
        }

        /**
         * @param eventgridTopicSecondaryAccessKey The secondary access key of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicSecondaryAccessKey(Output<String> eventgridTopicSecondaryAccessKey) {
            $.eventgridTopicSecondaryAccessKey = eventgridTopicSecondaryAccessKey;
            return this;
        }

        /**
         * @param eventgridTopicSecondaryAccessKey The secondary access key of the Event Grid Topic.
         * 
         * @return builder
         * 
         */
        public Builder eventgridTopicSecondaryAccessKey(String eventgridTopicSecondaryAccessKey) {
            return eventgridTopicSecondaryAccessKey(Output.of(eventgridTopicSecondaryAccessKey));
        }

        /**
         * @param name The name which should be used for this Digital Twins Eventgrid Endpoint. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output<String> name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name which should be used for this Digital Twins Eventgrid Endpoint. Changing this forces a new Digital Twins Eventgrid Endpoint to be created.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        public EndpointEventGridArgs build() {
            $.digitalTwinsId = Objects.requireNonNull($.digitalTwinsId, "expected parameter 'digitalTwinsId' to be non-null");
            $.eventgridTopicEndpoint = Objects.requireNonNull($.eventgridTopicEndpoint, "expected parameter 'eventgridTopicEndpoint' to be non-null");
            $.eventgridTopicPrimaryAccessKey = Objects.requireNonNull($.eventgridTopicPrimaryAccessKey, "expected parameter 'eventgridTopicPrimaryAccessKey' to be non-null");
            $.eventgridTopicSecondaryAccessKey = Objects.requireNonNull($.eventgridTopicSecondaryAccessKey, "expected parameter 'eventgridTopicSecondaryAccessKey' to be non-null");
            return $;
        }
    }

}
