<filename>sdk/dotnet/GetFunctionTrigger.cs// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Yandex
{
    public static class GetFunctionTrigger
    {
        /// <summary>
        /// Get information about a Yandex Cloud Function Trigger. For more information about Yandex Cloud Functions, see 
        /// [Yandex Cloud Functions](https://cloud.yandex.com/docs/functions/).
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Yandex = Pulumi.Yandex;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var myTrigger = Yandex.GetFunctionTrigger.Invoke(new()
        ///     {
        ///         TriggerId = "are1sampletrigger11",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// This data source is used to define [Yandex Cloud Functions Trigger](https://cloud.yandex.com/docs/functions/concepts/trigger) that can be used by other resources.
        /// </summary>
        public static Task<GetFunctionTriggerResult> InvokeAsync(GetFunctionTriggerArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetFunctionTriggerResult>("yandex:index/getFunctionTrigger:getFunctionTrigger", args ?? new GetFunctionTriggerArgs(), options.WithDefaults());

        /// <summary>
        /// Get information about a Yandex Cloud Function Trigger. For more information about Yandex Cloud Functions, see 
        /// [Yandex Cloud Functions](https://cloud.yandex.com/docs/functions/).
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Yandex = Pulumi.Yandex;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var myTrigger = Yandex.GetFunctionTrigger.Invoke(new()
        ///     {
        ///         TriggerId = "are1sampletrigger11",
        ///     });
        /// 
        /// });
        /// ```
        /// 
        /// This data source is used to define [Yandex Cloud Functions Trigger](https://cloud.yandex.com/docs/functions/concepts/trigger) that can be used by other resources.
        /// </summary>
        public static Output<GetFunctionTriggerResult> Invoke(GetFunctionTriggerInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetFunctionTriggerResult>("yandex:index/getFunctionTrigger:getFunctionTrigger", args ?? new GetFunctionTriggerInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetFunctionTriggerArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Folder ID for the Yandex Cloud Functions Trigger
        /// </summary>
        [Input("folderId")]
        public string? FolderId { get; set; }

        /// <summary>
        /// Yandex Cloud Functions Trigger name used to define trigger
        /// </summary>
        [Input("name")]
        public string? Name { get; set; }

        /// <summary>
        /// Yandex Cloud Functions Trigger id used to define trigger
        /// </summary>
        [Input("triggerId")]
        public string? TriggerId { get; set; }

        public GetFunctionTriggerArgs()
        {
        }
        public static new GetFunctionTriggerArgs Empty => new GetFunctionTriggerArgs();
    }

    public sealed class GetFunctionTriggerInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Folder ID for the Yandex Cloud Functions Trigger
        /// </summary>
        [Input("folderId")]
        public Input<string>? FolderId { get; set; }

        /// <summary>
        /// Yandex Cloud Functions Trigger name used to define trigger
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// Yandex Cloud Functions Trigger id used to define trigger
        /// </summary>
        [Input("triggerId")]
        public Input<string>? TriggerId { get; set; }

        public GetFunctionTriggerInvokeArgs()
        {
        }
        public static new GetFunctionTriggerInvokeArgs Empty => new GetFunctionTriggerInvokeArgs();
    }


    [OutputType]
    public sealed class GetFunctionTriggerResult
    {
        /// <summary>
        /// Creation timestamp of the Yandex Cloud Functions Trigger
        /// </summary>
        public readonly string CreatedAt;
        /// <summary>
        /// Description of the Yandex Cloud Functions Trigger
        /// </summary>
        public readonly string Description;
        /// <summary>
        /// Dead Letter Queue settings definition for Yandex Cloud Functions Trigger
        /// * `dlq.0.queue_id` - ID of Dead Letter Queue for Trigger (Queue ARN)
        /// * `dlq.0.service_account_id` - Service Account ID for Dead Letter Queue for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerDlqResult> Dlqs;
        /// <summary>
        /// Folder ID for the Yandex Cloud Functions Trigger
        /// </summary>
        public readonly string? FolderId;
        /// <summary>
        /// [Yandex.Cloud Function](https://cloud.yandex.com/docs/functions/concepts/function) settings definition for Yandex Cloud Functions Trigger
        /// * `function.0.id` - Yandex.Cloud Function ID for Yandex Cloud Functions Trigger
        /// * `function.0.service_account_id` - Service account ID for Yandex.Cloud Function for Yandex Cloud Functions Trigger
        /// * `function.0.tag` - Tag for Yandex.Cloud Function for Yandex Cloud Functions Trigger
        /// * `function.0.retry_attempts` - Retry attempts for Yandex.Cloud Function for Yandex Cloud Functions Trigger
        /// * `function.0.retry_interval` - Retry interval in seconds for Yandex.Cloud Function for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerFunctionResult> Functions;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// [IoT](https://cloud.yandex.com/docs/functions/concepts/trigger/iot-core-trigger) settings definition for Yandex Cloud Functions Trigger, if present
        /// * `iot.0.registry_id` - IoT Registry ID for Yandex Cloud Functions Trigger
        /// * `iot.0.device_id` - IoT Device ID for Yandex Cloud Functions Trigger
        /// * `iot.0.topic` - IoT Topic for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerIotResult> Iots;
        /// <summary>
        /// A set of key/value label pairs to assign to the Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableDictionary<string, string> Labels;
        public readonly ImmutableArray<Outputs.GetFunctionTriggerLogGroupResult> LogGroups;
        public readonly ImmutableArray<Outputs.GetFunctionTriggerLoggingResult> Loggings;
        /// <summary>
        /// [Message Queue](https://cloud.yandex.com/docs/functions/concepts/trigger/ymq-trigger) settings definition for Yandex Cloud Functions Trigger, if present
        /// * `message_queue.0.queue_id` - Message Queue ID for Yandex Cloud Functions Trigger
        /// * `message_queue.0.service_account_id` - Message Queue Service Account ID for Yandex Cloud Functions Trigger
        /// * `message_queue.0.batch_cutoff` - Batch Duration in seconds for Yandex Cloud Functions Trigger
        /// * `message_queue.0.batch_size` - Batch Size for Yandex Cloud Functions Trigger
        /// * `message_queue.0.visibility_timeout` - Visibility timeout for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerMessageQueueResult> MessageQueues;
        public readonly string? Name;
        /// <summary>
        /// [Object Storage](https://cloud.yandex.com/docs/functions/concepts/trigger/os-trigger) settings definition for Yandex Cloud Functions Trigger, if present
        /// * `object_storage.0.bucket_id` - Object Storage Bucket ID for Yandex Cloud Functions Trigger
        /// * `object_storage.0.prefix` - Prefix for Object Storage for Yandex Cloud Functions Trigger
        /// * `object_storage.0.suffix` - Suffix for Object Storage for Yandex Cloud Functions Trigger
        /// * `object_storage.0.create` - Boolean flag for setting create event for Yandex Cloud Functions Trigger
        /// * `object_storage.0.update` - Boolean flag for setting update event for Yandex Cloud Functions Trigger
        /// * `object_storage.0.delete` - Boolean flag for setting delete event for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerObjectStorageResult> ObjectStorages;
        /// <summary>
        /// [Timer](https://cloud.yandex.com/docs/functions/concepts/trigger/timer) settings definition for Yandex Cloud Functions Trigger, if present
        /// * `timer.0.cron_expression` - Cron expression for timer for Yandex Cloud Functions Trigger
        /// </summary>
        public readonly ImmutableArray<Outputs.GetFunctionTriggerTimerResult> Timers;
        public readonly string? TriggerId;

        [OutputConstructor]
        private GetFunctionTriggerResult(
            string createdAt,

            string description,

            ImmutableArray<Outputs.GetFunctionTriggerDlqResult> dlqs,

            string? folderId,

            ImmutableArray<Outputs.GetFunctionTriggerFunctionResult> functions,

            string id,

            ImmutableArray<Outputs.GetFunctionTriggerIotResult> iots,

            ImmutableDictionary<string, string> labels,

            ImmutableArray<Outputs.GetFunctionTriggerLogGroupResult> logGroups,

            ImmutableArray<Outputs.GetFunctionTriggerLoggingResult> loggings,

            ImmutableArray<Outputs.GetFunctionTriggerMessageQueueResult> messageQueues,

            string? name,

            ImmutableArray<Outputs.GetFunctionTriggerObjectStorageResult> objectStorages,

            ImmutableArray<Outputs.GetFunctionTriggerTimerResult> timers,

            string? triggerId)
        {
            CreatedAt = createdAt;
            Description = description;
            Dlqs = dlqs;
            FolderId = folderId;
            Functions = functions;
            Id = id;
            Iots = iots;
            Labels = labels;
            LogGroups = logGroups;
            Loggings = loggings;
            MessageQueues = messageQueues;
            Name = name;
            ObjectStorages = objectStorages;
            Timers = timers;
            TriggerId = triggerId;
        }
    }
}
