// *** 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;
using Pulumi;

namespace Pulumiverse.Fortios
{
    public static class GetSystemObjecttagging
    {
        /// <summary>
        /// Use this data source to get information on an fortios system objecttagging
        /// </summary>
        public static Task<GetSystemObjecttaggingResult> InvokeAsync(GetSystemObjecttaggingArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemObjecttaggingResult>("fortios:index/getSystemObjecttagging:getSystemObjecttagging", args ?? new GetSystemObjecttaggingArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios system objecttagging
        /// </summary>
        public static Output<GetSystemObjecttaggingResult> Invoke(GetSystemObjecttaggingInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemObjecttaggingResult>("fortios:index/getSystemObjecttagging:getSystemObjecttagging", args ?? new GetSystemObjecttaggingInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemObjecttaggingArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the category of the desired system objecttagging.
        /// </summary>
        [Input("category", required: true)]
        public string Category { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public string? Vdomparam { get; set; }

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

    public sealed class GetSystemObjecttaggingInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the category of the desired system objecttagging.
        /// </summary>
        [Input("category", required: true)]
        public Input<string> Category { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

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


    [OutputType]
    public sealed class GetSystemObjecttaggingResult
    {
        /// <summary>
        /// Address.
        /// </summary>
        public readonly string Address;
        /// <summary>
        /// Tag Category.
        /// </summary>
        public readonly string Category;
        /// <summary>
        /// Color of icon on the GUI.
        /// </summary>
        public readonly int Color;
        /// <summary>
        /// Device.
        /// </summary>
        public readonly string Device;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Interface.
        /// </summary>
        public readonly string Interface;
        /// <summary>
        /// Allow multiple tag selection.
        /// </summary>
        public readonly string Multiple;
        /// <summary>
        /// Tags. The structure of `tags` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemObjecttaggingTagResult> Tags;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetSystemObjecttaggingResult(
            string address,

            string category,

            int color,

            string device,

            string id,

            string @interface,

            string multiple,

            ImmutableArray<Outputs.GetSystemObjecttaggingTagResult> tags,

            string? vdomparam)
        {
            Address = address;
            Category = category;
            Color = color;
            Device = device;
            Id = id;
            Interface = @interface;
            Multiple = multiple;
            Tags = tags;
            Vdomparam = vdomparam;
        }
    }
}
