All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.securityinsights.kotlin.ContentTemplateArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 2.82.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.securityinsights.kotlin

import com.pulumi.azurenative.securityinsights.ContentTemplateArgs.builder
import com.pulumi.azurenative.securityinsights.kotlin.enums.Kind
import com.pulumi.azurenative.securityinsights.kotlin.enums.PackageKind
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataAuthorArgs
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataAuthorArgsBuilder
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataCategoriesArgs
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataCategoriesArgsBuilder
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataDependenciesArgs
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataDependenciesArgsBuilder
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataSourceArgs
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataSourceArgsBuilder
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataSupportArgs
import com.pulumi.azurenative.securityinsights.kotlin.inputs.MetadataSupportArgsBuilder
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Any
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Template resource definition.
 * Azure REST API version: 2023-06-01-preview.
 * Other available API versions: 2023-07-01-preview, 2023-08-01-preview, 2023-09-01-preview, 2023-10-01-preview, 2023-11-01, 2023-12-01-preview, 2024-01-01-preview, 2024-03-01.
 * ## Example Usage
 * ### Get a template.
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var contentTemplate = new AzureNative.SecurityInsights.ContentTemplate("contentTemplate", new()
 *     {
 *         Author = new AzureNative.SecurityInsights.Inputs.MetadataAuthorArgs
 *         {
 *             Email = "[email protected]",
 *             Name = "Microsoft",
 *         },
 *         ContentId = "8365ebfe-a381-45b7-ad08-7d818070e11f",
 *         ContentKind = AzureNative.SecurityInsights.Kind.AnalyticsRule,
 *         DisplayName = "API Protection workbook template",
 *         MainTemplate = new Dictionary
 *         {
 *             ["$schema"] = "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
 *             ["contentVersion"] = "1.0.1",
 *             ["resources"] = new[]
 *             {
 *                 new Dictionary
 *                 {
 *                     ["apiVersion"] = "2022-04-01-preview",
 *                     ["kind"] = "Scheduled",
 *                     ["location"] = "[parameters('workspace-location')]",
 *                     ["name"] = "8365ebfe-a381-45b7-ad08-7d818070e11f",
 *                     ["properties"] = new Dictionary
 *                     {
 *                         ["description"] = "Creates an incident when a large number of Critical/High severity CrowdStrike Falcon sensor detections is triggered by a single user",
 *                         ["displayName"] = "Critical or High Severity Detections by User",
 *                         ["enabled"] = false,
 *                         ["query"] = "...",
 *                         ["queryFrequency"] = "PT1H",
 *                         ["queryPeriod"] = "PT1H",
 *                         ["severity"] = "High",
 *                         ["status"] = "Available",
 *                         ["suppressionDuration"] = "PT1H",
 *                         ["suppressionEnabled"] = false,
 *                         ["triggerOperator"] = "GreaterThan",
 *                         ["triggerThreshold"] = 0,
 *                     },
 *                     ["type"] = "Microsoft.SecurityInsights/AlertRuleTemplates",
 *                 },
 *                 new Dictionary
 *                 {
 *                     ["apiVersion"] = "2022-01-01-preview",
 *                     ["name"] = "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split([resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)],'/'))))]",
 *                     ["properties"] = new Dictionary
 *                     {
 *                         ["author"] = new Dictionary
 *                         {
 *                             ["email"] = "[email protected]",
 *                             ["name"] = "Microsoft",
 *                         },
 *                         ["contentId"] = "4465ebde-b381-45f7-ad08-7d818070a11c",
 *                         ["description"] = "CrowdStrike Falcon Endpoint Protection Analytics Rule 1",
 *                         ["kind"] = "AnalyticsRule",
 *                         ["parentId"] = "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)]",
 *                         ["source"] = new Dictionary
 *                         {
 *                             ["kind"] = "Solution",
 *                             ["name"] = "str",
 *                             ["sourceId"] = "str.azure-sentinel-solution-str",
 *                         },
 *                         ["support"] = new Dictionary
 *                         {
 *                             ["email"] = "[email protected]",
 *                             ["link"] = "https://support.microsoft.com/",
 *                             ["name"] = "Microsoft Corporation",
 *                             ["tier"] = "Microsoft",
 *                         },
 *                         ["version"] = "1.0.0",
 *                     },
 *                     ["type"] = "Microsoft.OperationalInsights/workspaces/providers/metadata",
 *                 },
 *             },
 *         },
 *         PackageId = "str.azure-sentinel-solution-str",
 *         PackageKind = AzureNative.SecurityInsights.PackageKind.Solution,
 *         PackageName = "str",
 *         ResourceGroupName = "myRg",
 *         Source = new AzureNative.SecurityInsights.Inputs.MetadataSourceArgs
 *         {
 *             Kind = AzureNative.SecurityInsights.SourceKind.Solution,
 *             Name = "str",
 *             SourceId = "str.azure-sentinel-solution-str",
 *         },
 *         Support = new AzureNative.SecurityInsights.Inputs.MetadataSupportArgs
 *         {
 *             Email = "[email protected]",
 *             Link = "https://support.microsoft.com/",
 *             Name = "Microsoft Corporation",
 *             Tier = AzureNative.SecurityInsights.SupportTier.Microsoft,
 *         },
 *         TemplateId = "str.azure-sentinel-solution-str",
 *         Version = "1.0.1",
 *         WorkspaceName = "myWorkspace",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	securityinsights "github.com/pulumi/pulumi-azure-native-sdk/securityinsights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := securityinsights.NewContentTemplate(ctx, "contentTemplate", &securityinsights.ContentTemplateArgs{
 * 			Author: &securityinsights.MetadataAuthorArgs{
 * 				Email: pulumi.String("[email protected]"),
 * 				Name:  pulumi.String("Microsoft"),
 * 			},
 * 			ContentId:   pulumi.String("8365ebfe-a381-45b7-ad08-7d818070e11f"),
 * 			ContentKind: pulumi.String(securityinsights.KindAnalyticsRule),
 * 			DisplayName: pulumi.String("API Protection workbook template"),
 * 			MainTemplate: pulumi.Any(map[string]interface{}{
 * 				"$schema":        "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
 * 				"contentVersion": "1.0.1",
 * 				"resources": []interface{}{
 * 					map[string]interface{}{
 * 						"apiVersion": "2022-04-01-preview",
 * 						"kind":       "Scheduled",
 * 						"location":   "[parameters('workspace-location')]",
 * 						"name":       "8365ebfe-a381-45b7-ad08-7d818070e11f",
 * 						"properties": map[string]interface{}{
 * 							"description":         "Creates an incident when a large number of Critical/High severity CrowdStrike Falcon sensor detections is triggered by a single user",
 * 							"displayName":         "Critical or High Severity Detections by User",
 * 							"enabled":             false,
 * 							"query":               "...",
 * 							"queryFrequency":      "PT1H",
 * 							"queryPeriod":         "PT1H",
 * 							"severity":            "High",
 * 							"status":              "Available",
 * 							"suppressionDuration": "PT1H",
 * 							"suppressionEnabled":  false,
 * 							"triggerOperator":     "GreaterThan",
 * 							"triggerThreshold":    0,
 * 						},
 * 						"type": "Microsoft.SecurityInsights/AlertRuleTemplates",
 * 					},
 * 					map[string]interface{}{
 * 						"apiVersion": "2022-01-01-preview",
 * 						"name":       "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split([resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)],'/'))))]",
 * 						"properties": map[string]interface{}{
 * 							"author": map[string]interface{}{
 * 								"email": "[email protected]",
 * 								"name":  "Microsoft",
 * 							},
 * 							"contentId":   "4465ebde-b381-45f7-ad08-7d818070a11c",
 * 							"description": "CrowdStrike Falcon Endpoint Protection Analytics Rule 1",
 * 							"kind":        "AnalyticsRule",
 * 							"parentId":    "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)]",
 * 							"source": map[string]interface{}{
 * 								"kind":     "Solution",
 * 								"name":     "str",
 * 								"sourceId": "str.azure-sentinel-solution-str",
 * 							},
 * 							"support": map[string]interface{}{
 * 								"email": "[email protected]",
 * 								"link":  "https://support.microsoft.com/",
 * 								"name":  "Microsoft Corporation",
 * 								"tier":  "Microsoft",
 * 							},
 * 							"version": "1.0.0",
 * 						},
 * 						"type": "Microsoft.OperationalInsights/workspaces/providers/metadata",
 * 					},
 * 				},
 * 			}),
 * 			PackageId:         pulumi.String("str.azure-sentinel-solution-str"),
 * 			PackageKind:       pulumi.String(securityinsights.PackageKindSolution),
 * 			PackageName:       pulumi.String("str"),
 * 			ResourceGroupName: pulumi.String("myRg"),
 * 			Source: &securityinsights.MetadataSourceArgs{
 * 				Kind:     pulumi.String(securityinsights.SourceKindSolution),
 * 				Name:     pulumi.String("str"),
 * 				SourceId: pulumi.String("str.azure-sentinel-solution-str"),
 * 			},
 * 			Support: &securityinsights.MetadataSupportArgs{
 * 				Email: pulumi.String("[email protected]"),
 * 				Link:  pulumi.String("https://support.microsoft.com/"),
 * 				Name:  pulumi.String("Microsoft Corporation"),
 * 				Tier:  pulumi.String(securityinsights.SupportTierMicrosoft),
 * 			},
 * 			TemplateId:    pulumi.String("str.azure-sentinel-solution-str"),
 * 			Version:       pulumi.String("1.0.1"),
 * 			WorkspaceName: pulumi.String("myWorkspace"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.securityinsights.ContentTemplate;
 * import com.pulumi.azurenative.securityinsights.ContentTemplateArgs;
 * import com.pulumi.azurenative.securityinsights.inputs.MetadataAuthorArgs;
 * import com.pulumi.azurenative.securityinsights.inputs.MetadataSourceArgs;
 * import com.pulumi.azurenative.securityinsights.inputs.MetadataSupportArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var contentTemplate = new ContentTemplate("contentTemplate", ContentTemplateArgs.builder()
 *             .author(MetadataAuthorArgs.builder()
 *                 .email("[email protected]")
 *                 .name("Microsoft")
 *                 .build())
 *             .contentId("8365ebfe-a381-45b7-ad08-7d818070e11f")
 *             .contentKind("AnalyticsRule")
 *             .displayName("API Protection workbook template")
 *             .mainTemplate(Map.ofEntries(
 *                 Map.entry("$schema", "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#"),
 *                 Map.entry("contentVersion", "1.0.1"),
 *                 Map.entry("resources",
 *                     Map.ofEntries(
 *                         Map.entry("apiVersion", "2022-04-01-preview"),
 *                         Map.entry("kind", "Scheduled"),
 *                         Map.entry("location", "[parameters('workspace-location')]"),
 *                         Map.entry("name", "8365ebfe-a381-45b7-ad08-7d818070e11f"),
 *                         Map.entry("properties", Map.ofEntries(
 *                             Map.entry("description", "Creates an incident when a large number of Critical/High severity CrowdStrike Falcon sensor detections is triggered by a single user"),
 *                             Map.entry("displayName", "Critical or High Severity Detections by User"),
 *                             Map.entry("enabled", false),
 *                             Map.entry("query", "..."),
 *                             Map.entry("queryFrequency", "PT1H"),
 *                             Map.entry("queryPeriod", "PT1H"),
 *                             Map.entry("severity", "High"),
 *                             Map.entry("status", "Available"),
 *                             Map.entry("suppressionDuration", "PT1H"),
 *                             Map.entry("suppressionEnabled", false),
 *                             Map.entry("triggerOperator", "GreaterThan"),
 *                             Map.entry("triggerThreshold", 0)
 *                         )),
 *                         Map.entry("type", "Microsoft.SecurityInsights/AlertRuleTemplates")
 *                     ),
 *                     Map.ofEntries(
 *                         Map.entry("apiVersion", "2022-01-01-preview"),
 *                         Map.entry("name", "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split([resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)],'/'))))]"),
 *                         Map.entry("properties", Map.ofEntries(
 *                             Map.entry("author", Map.ofEntries(
 *                                 Map.entry("email", "[email protected]"),
 *                                 Map.entry("name", "Microsoft")
 *                             )),
 *                             Map.entry("contentId", "4465ebde-b381-45f7-ad08-7d818070a11c"),
 *                             Map.entry("description", "CrowdStrike Falcon Endpoint Protection Analytics Rule 1"),
 *                             Map.entry("kind", "AnalyticsRule"),
 *                             Map.entry("parentId", "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', 8365ebfe-a381-45b7-ad08-7d818070e11f)]"),
 *                             Map.entry("source", Map.ofEntries(
 *                                 Map.entry("kind", "Solution"),
 *                                 Map.entry("name", "str"),
 *                                 Map.entry("sourceId", "str.azure-sentinel-solution-str")
 *                             )),
 *                             Map.entry("support", Map.ofEntries(
 *                                 Map.entry("email", "[email protected]"),
 *                                 Map.entry("link", "https://support.microsoft.com/"),
 *                                 Map.entry("name", "Microsoft Corporation"),
 *                                 Map.entry("tier", "Microsoft")
 *                             )),
 *                             Map.entry("version", "1.0.0")
 *                         )),
 *                         Map.entry("type", "Microsoft.OperationalInsights/workspaces/providers/metadata")
 *                     ))
 *             ))
 *             .packageId("str.azure-sentinel-solution-str")
 *             .packageKind("Solution")
 *             .packageName("str")
 *             .resourceGroupName("myRg")
 *             .source(MetadataSourceArgs.builder()
 *                 .kind("Solution")
 *                 .name("str")
 *                 .sourceId("str.azure-sentinel-solution-str")
 *                 .build())
 *             .support(MetadataSupportArgs.builder()
 *                 .email("[email protected]")
 *                 .link("https://support.microsoft.com/")
 *                 .name("Microsoft Corporation")
 *                 .tier("Microsoft")
 *                 .build())
 *             .templateId("str.azure-sentinel-solution-str")
 *             .version("1.0.1")
 *             .workspaceName("myWorkspace")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:securityinsights:ContentTemplate azuresentinel.azure-sentinel-solution-ciscoumbrella /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/contentTemplates/{templateId}
 * ```
 * @property author The creator of the content item.
 * @property categories Categories for the item
 * @property contentId Static ID for the content.  Used to identify dependencies and content from solutions or community.  Hard-coded/static for out of the box content and solutions. Dynamic for user-created.  This is the resource name
 * @property contentKind The kind of content the template is for.
 * @property contentSchemaVersion Schema version of the content. Can be used to distinguish between different flow based on the schema version
 * @property customVersion The custom version of the content. A optional free text
 * @property dependencies Dependencies for the content item, what other content items it requires to work.  Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.
 * @property displayName The display name of the template
 * @property firstPublishDate first publish date content item
 * @property icon the icon identifier. this id can later be fetched from the content metadata
 * @property lastPublishDate last publish date for the content item
 * @property mainTemplate The JSON of the ARM template to deploy active content
 * @property packageId the package Id contains this template
 * @property packageKind the packageKind of the package contains this template
 * @property packageName the name of the package contains this template
 * @property previewImages preview image file names. These will be taken from the solution artifacts
 * @property previewImagesDark preview image file names. These will be taken from the solution artifacts. used for dark theme support
 * @property providers Providers for the content item
 * @property resourceGroupName The name of the resource group. The name is case insensitive.
 * @property source Source of the content.  This is where/how it was created.
 * @property support Support information for the template - type, name, contact information
 * @property templateId template Id
 * @property threatAnalysisTactics the tactics the resource covers
 * @property threatAnalysisTechniques the techniques the resource covers, these have to be aligned with the tactics being used
 * @property version Version of the content.  Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata best practices.  Can also be any string, but then we cannot guarantee any version checks
 * @property workspaceName The name of the workspace.
 */
public data class ContentTemplateArgs(
    public val author: Output? = null,
    public val categories: Output? = null,
    public val contentId: Output? = null,
    public val contentKind: Output>? = null,
    public val contentSchemaVersion: Output? = null,
    public val customVersion: Output? = null,
    public val dependencies: Output? = null,
    public val displayName: Output? = null,
    public val firstPublishDate: Output? = null,
    public val icon: Output? = null,
    public val lastPublishDate: Output? = null,
    public val mainTemplate: Output? = null,
    public val packageId: Output? = null,
    public val packageKind: Output>? = null,
    public val packageName: Output? = null,
    public val previewImages: Output>? = null,
    public val previewImagesDark: Output>? = null,
    public val providers: Output>? = null,
    public val resourceGroupName: Output? = null,
    public val source: Output? = null,
    public val support: Output? = null,
    public val templateId: Output? = null,
    public val threatAnalysisTactics: Output>? = null,
    public val threatAnalysisTechniques: Output>? = null,
    public val version: Output? = null,
    public val workspaceName: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.securityinsights.ContentTemplateArgs =
        com.pulumi.azurenative.securityinsights.ContentTemplateArgs.builder()
            .author(author?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .categories(categories?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .contentId(contentId?.applyValue({ args0 -> args0 }))
            .contentKind(
                contentKind?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .contentSchemaVersion(contentSchemaVersion?.applyValue({ args0 -> args0 }))
            .customVersion(customVersion?.applyValue({ args0 -> args0 }))
            .dependencies(dependencies?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .firstPublishDate(firstPublishDate?.applyValue({ args0 -> args0 }))
            .icon(icon?.applyValue({ args0 -> args0 }))
            .lastPublishDate(lastPublishDate?.applyValue({ args0 -> args0 }))
            .mainTemplate(mainTemplate?.applyValue({ args0 -> args0 }))
            .packageId(packageId?.applyValue({ args0 -> args0 }))
            .packageKind(
                packageKind?.applyValue({ args0 ->
                    args0.transform({ args0 -> args0 }, { args0 ->
                        args0.let({ args0 -> args0.toJava() })
                    })
                }),
            )
            .packageName(packageName?.applyValue({ args0 -> args0 }))
            .previewImages(previewImages?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .previewImagesDark(previewImagesDark?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .providers(providers?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 }))
            .source(source?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .support(support?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .templateId(templateId?.applyValue({ args0 -> args0 }))
            .threatAnalysisTactics(threatAnalysisTactics?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .threatAnalysisTechniques(
                threatAnalysisTechniques?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0
                    })
                }),
            )
            .version(version?.applyValue({ args0 -> args0 }))
            .workspaceName(workspaceName?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ContentTemplateArgs].
 */
@PulumiTagMarker
public class ContentTemplateArgsBuilder internal constructor() {
    private var author: Output? = null

    private var categories: Output? = null

    private var contentId: Output? = null

    private var contentKind: Output>? = null

    private var contentSchemaVersion: Output? = null

    private var customVersion: Output? = null

    private var dependencies: Output? = null

    private var displayName: Output? = null

    private var firstPublishDate: Output? = null

    private var icon: Output? = null

    private var lastPublishDate: Output? = null

    private var mainTemplate: Output? = null

    private var packageId: Output? = null

    private var packageKind: Output>? = null

    private var packageName: Output? = null

    private var previewImages: Output>? = null

    private var previewImagesDark: Output>? = null

    private var providers: Output>? = null

    private var resourceGroupName: Output? = null

    private var source: Output? = null

    private var support: Output? = null

    private var templateId: Output? = null

    private var threatAnalysisTactics: Output>? = null

    private var threatAnalysisTechniques: Output>? = null

    private var version: Output? = null

    private var workspaceName: Output? = null

    /**
     * @param value The creator of the content item.
     */
    @JvmName("nofvhfttjthfatha")
    public suspend fun author(`value`: Output) {
        this.author = value
    }

    /**
     * @param value Categories for the item
     */
    @JvmName("umxpvjmfglpqjuas")
    public suspend fun categories(`value`: Output) {
        this.categories = value
    }

    /**
     * @param value Static ID for the content.  Used to identify dependencies and content from solutions or community.  Hard-coded/static for out of the box content and solutions. Dynamic for user-created.  This is the resource name
     */
    @JvmName("vmwcpblnnppqwsep")
    public suspend fun contentId(`value`: Output) {
        this.contentId = value
    }

    /**
     * @param value The kind of content the template is for.
     */
    @JvmName("lchlpfxhgkqpaltd")
    public suspend fun contentKind(`value`: Output>) {
        this.contentKind = value
    }

    /**
     * @param value Schema version of the content. Can be used to distinguish between different flow based on the schema version
     */
    @JvmName("sdymcfhecvavbaas")
    public suspend fun contentSchemaVersion(`value`: Output) {
        this.contentSchemaVersion = value
    }

    /**
     * @param value The custom version of the content. A optional free text
     */
    @JvmName("cxonthqnpbfcsugf")
    public suspend fun customVersion(`value`: Output) {
        this.customVersion = value
    }

    /**
     * @param value Dependencies for the content item, what other content items it requires to work.  Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.
     */
    @JvmName("brpmypafxpxbicvb")
    public suspend fun dependencies(`value`: Output) {
        this.dependencies = value
    }

    /**
     * @param value The display name of the template
     */
    @JvmName("vmpspapjdpbbvcgh")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value first publish date content item
     */
    @JvmName("fmwvrcqwxqqsjfet")
    public suspend fun firstPublishDate(`value`: Output) {
        this.firstPublishDate = value
    }

    /**
     * @param value the icon identifier. this id can later be fetched from the content metadata
     */
    @JvmName("sdbwxcakfemjcpax")
    public suspend fun icon(`value`: Output) {
        this.icon = value
    }

    /**
     * @param value last publish date for the content item
     */
    @JvmName("byhiqdimodqrwyug")
    public suspend fun lastPublishDate(`value`: Output) {
        this.lastPublishDate = value
    }

    /**
     * @param value The JSON of the ARM template to deploy active content
     */
    @JvmName("ggnenfeuppshcdwn")
    public suspend fun mainTemplate(`value`: Output) {
        this.mainTemplate = value
    }

    /**
     * @param value the package Id contains this template
     */
    @JvmName("dqykvgdqanpbthmi")
    public suspend fun packageId(`value`: Output) {
        this.packageId = value
    }

    /**
     * @param value the packageKind of the package contains this template
     */
    @JvmName("ndfycpcalukkcytf")
    public suspend fun packageKind(`value`: Output>) {
        this.packageKind = value
    }

    /**
     * @param value the name of the package contains this template
     */
    @JvmName("dkgalkbxnbytmhey")
    public suspend fun packageName(`value`: Output) {
        this.packageName = value
    }

    /**
     * @param value preview image file names. These will be taken from the solution artifacts
     */
    @JvmName("wsjetkkjqiqbjlxr")
    public suspend fun previewImages(`value`: Output>) {
        this.previewImages = value
    }

    @JvmName("adxlbxymkuikkhac")
    public suspend fun previewImages(vararg values: Output) {
        this.previewImages = Output.all(values.asList())
    }

    /**
     * @param values preview image file names. These will be taken from the solution artifacts
     */
    @JvmName("stcjcuwejkqrybwj")
    public suspend fun previewImages(values: List>) {
        this.previewImages = Output.all(values)
    }

    /**
     * @param value preview image file names. These will be taken from the solution artifacts. used for dark theme support
     */
    @JvmName("eufatlhjosswpbgc")
    public suspend fun previewImagesDark(`value`: Output>) {
        this.previewImagesDark = value
    }

    @JvmName("piamswujjxvlvgqg")
    public suspend fun previewImagesDark(vararg values: Output) {
        this.previewImagesDark = Output.all(values.asList())
    }

    /**
     * @param values preview image file names. These will be taken from the solution artifacts. used for dark theme support
     */
    @JvmName("bmgfhotgigpsiqss")
    public suspend fun previewImagesDark(values: List>) {
        this.previewImagesDark = Output.all(values)
    }

    /**
     * @param value Providers for the content item
     */
    @JvmName("dcawissuiwpeurej")
    public suspend fun providers(`value`: Output>) {
        this.providers = value
    }

    @JvmName("kvkyviulieuwbrpv")
    public suspend fun providers(vararg values: Output) {
        this.providers = Output.all(values.asList())
    }

    /**
     * @param values Providers for the content item
     */
    @JvmName("kcpftcgppfeglstq")
    public suspend fun providers(values: List>) {
        this.providers = Output.all(values)
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("wemddwqnwxqyevoi")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value Source of the content.  This is where/how it was created.
     */
    @JvmName("rebcmccxsxpogfid")
    public suspend fun source(`value`: Output) {
        this.source = value
    }

    /**
     * @param value Support information for the template - type, name, contact information
     */
    @JvmName("mweoybqlqkfdpjst")
    public suspend fun support(`value`: Output) {
        this.support = value
    }

    /**
     * @param value template Id
     */
    @JvmName("iacofpawpiwmyvqh")
    public suspend fun templateId(`value`: Output) {
        this.templateId = value
    }

    /**
     * @param value the tactics the resource covers
     */
    @JvmName("nhhywxejunygdgfs")
    public suspend fun threatAnalysisTactics(`value`: Output>) {
        this.threatAnalysisTactics = value
    }

    @JvmName("hwbnmkeklcrljugy")
    public suspend fun threatAnalysisTactics(vararg values: Output) {
        this.threatAnalysisTactics = Output.all(values.asList())
    }

    /**
     * @param values the tactics the resource covers
     */
    @JvmName("inlqmxqowykmxffb")
    public suspend fun threatAnalysisTactics(values: List>) {
        this.threatAnalysisTactics = Output.all(values)
    }

    /**
     * @param value the techniques the resource covers, these have to be aligned with the tactics being used
     */
    @JvmName("hrawwoedapwnhjgx")
    public suspend fun threatAnalysisTechniques(`value`: Output>) {
        this.threatAnalysisTechniques = value
    }

    @JvmName("sxulwpudeqmcgggl")
    public suspend fun threatAnalysisTechniques(vararg values: Output) {
        this.threatAnalysisTechniques = Output.all(values.asList())
    }

    /**
     * @param values the techniques the resource covers, these have to be aligned with the tactics being used
     */
    @JvmName("yyhbjxobtyvsmecd")
    public suspend fun threatAnalysisTechniques(values: List>) {
        this.threatAnalysisTechniques = Output.all(values)
    }

    /**
     * @param value Version of the content.  Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata best practices.  Can also be any string, but then we cannot guarantee any version checks
     */
    @JvmName("gpghausthwyeeafg")
    public suspend fun version(`value`: Output) {
        this.version = value
    }

    /**
     * @param value The name of the workspace.
     */
    @JvmName("ftlvyuwuvqjcsixu")
    public suspend fun workspaceName(`value`: Output) {
        this.workspaceName = value
    }

    /**
     * @param value The creator of the content item.
     */
    @JvmName("hceuqfmvpesoxixq")
    public suspend fun author(`value`: MetadataAuthorArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.author = mapped
    }

    /**
     * @param argument The creator of the content item.
     */
    @JvmName("cxafcwuueltfycgk")
    public suspend fun author(argument: suspend MetadataAuthorArgsBuilder.() -> Unit) {
        val toBeMapped = MetadataAuthorArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.author = mapped
    }

    /**
     * @param value Categories for the item
     */
    @JvmName("dvowmoxninxrriwk")
    public suspend fun categories(`value`: MetadataCategoriesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.categories = mapped
    }

    /**
     * @param argument Categories for the item
     */
    @JvmName("gugautjplmuiqcuv")
    public suspend fun categories(argument: suspend MetadataCategoriesArgsBuilder.() -> Unit) {
        val toBeMapped = MetadataCategoriesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.categories = mapped
    }

    /**
     * @param value Static ID for the content.  Used to identify dependencies and content from solutions or community.  Hard-coded/static for out of the box content and solutions. Dynamic for user-created.  This is the resource name
     */
    @JvmName("lkwhftnnvxtpkboe")
    public suspend fun contentId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.contentId = mapped
    }

    /**
     * @param value The kind of content the template is for.
     */
    @JvmName("eskfiffbbbdogoki")
    public suspend fun contentKind(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.contentKind = mapped
    }

    /**
     * @param value The kind of content the template is for.
     */
    @JvmName("vskxpuwowdkyjtkt")
    public fun contentKind(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.contentKind = mapped
    }

    /**
     * @param value The kind of content the template is for.
     */
    @JvmName("gctgdunaddnqnvvl")
    public fun contentKind(`value`: Kind) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.contentKind = mapped
    }

    /**
     * @param value Schema version of the content. Can be used to distinguish between different flow based on the schema version
     */
    @JvmName("ktflnvjpcqvfwvni")
    public suspend fun contentSchemaVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.contentSchemaVersion = mapped
    }

    /**
     * @param value The custom version of the content. A optional free text
     */
    @JvmName("nkuwthiknerijrti")
    public suspend fun customVersion(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customVersion = mapped
    }

    /**
     * @param value Dependencies for the content item, what other content items it requires to work.  Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.
     */
    @JvmName("wfunpqchmpjjescc")
    public suspend fun dependencies(`value`: MetadataDependenciesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dependencies = mapped
    }

    /**
     * @param argument Dependencies for the content item, what other content items it requires to work.  Can describe more complex dependencies using a recursive/nested structure. For a single dependency an id/kind/version can be supplied or operator/criteria for complex formats.
     */
    @JvmName("ldcraxjmitrvaejh")
    public suspend fun dependencies(argument: suspend MetadataDependenciesArgsBuilder.() -> Unit) {
        val toBeMapped = MetadataDependenciesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.dependencies = mapped
    }

    /**
     * @param value The display name of the template
     */
    @JvmName("doghrvjcjjouiuiy")
    public suspend fun displayName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.displayName = mapped
    }

    /**
     * @param value first publish date content item
     */
    @JvmName("fbcwixuxaoxtjaev")
    public suspend fun firstPublishDate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.firstPublishDate = mapped
    }

    /**
     * @param value the icon identifier. this id can later be fetched from the content metadata
     */
    @JvmName("jsrmdgxxqxswlbpe")
    public suspend fun icon(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.icon = mapped
    }

    /**
     * @param value last publish date for the content item
     */
    @JvmName("pdwljpjckakvrprh")
    public suspend fun lastPublishDate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.lastPublishDate = mapped
    }

    /**
     * @param value The JSON of the ARM template to deploy active content
     */
    @JvmName("dkgcvucnesfdvxro")
    public suspend fun mainTemplate(`value`: Any?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mainTemplate = mapped
    }

    /**
     * @param value the package Id contains this template
     */
    @JvmName("cuxxurcjvwtngxbi")
    public suspend fun packageId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.packageId = mapped
    }

    /**
     * @param value the packageKind of the package contains this template
     */
    @JvmName("geuhsbfyxlciepxj")
    public suspend fun packageKind(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.packageKind = mapped
    }

    /**
     * @param value the packageKind of the package contains this template
     */
    @JvmName("bnhnpxgwhgsekvfy")
    public fun packageKind(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.packageKind = mapped
    }

    /**
     * @param value the packageKind of the package contains this template
     */
    @JvmName("yuixlrjaffbwhdey")
    public fun packageKind(`value`: PackageKind) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.packageKind = mapped
    }

    /**
     * @param value the name of the package contains this template
     */
    @JvmName("gjwrcdiuycjddvqt")
    public suspend fun packageName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.packageName = mapped
    }

    /**
     * @param value preview image file names. These will be taken from the solution artifacts
     */
    @JvmName("txfdtwfokmhnsvya")
    public suspend fun previewImages(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.previewImages = mapped
    }

    /**
     * @param values preview image file names. These will be taken from the solution artifacts
     */
    @JvmName("xvspmsjimbmmnhpe")
    public suspend fun previewImages(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.previewImages = mapped
    }

    /**
     * @param value preview image file names. These will be taken from the solution artifacts. used for dark theme support
     */
    @JvmName("oicbdoptevqdirjw")
    public suspend fun previewImagesDark(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.previewImagesDark = mapped
    }

    /**
     * @param values preview image file names. These will be taken from the solution artifacts. used for dark theme support
     */
    @JvmName("ogokdjvfoeruwkka")
    public suspend fun previewImagesDark(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.previewImagesDark = mapped
    }

    /**
     * @param value Providers for the content item
     */
    @JvmName("fepoexohkwpaybxh")
    public suspend fun providers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.providers = mapped
    }

    /**
     * @param values Providers for the content item
     */
    @JvmName("dtqmtiqwjjfrvddv")
    public suspend fun providers(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.providers = mapped
    }

    /**
     * @param value The name of the resource group. The name is case insensitive.
     */
    @JvmName("quubkmcxroyiidwq")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    /**
     * @param value Source of the content.  This is where/how it was created.
     */
    @JvmName("obemtmntjhwewcim")
    public suspend fun source(`value`: MetadataSourceArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.source = mapped
    }

    /**
     * @param argument Source of the content.  This is where/how it was created.
     */
    @JvmName("meekvtngvvtqyfci")
    public suspend fun source(argument: suspend MetadataSourceArgsBuilder.() -> Unit) {
        val toBeMapped = MetadataSourceArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.source = mapped
    }

    /**
     * @param value Support information for the template - type, name, contact information
     */
    @JvmName("nysfqjsofdlgvsao")
    public suspend fun support(`value`: MetadataSupportArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.support = mapped
    }

    /**
     * @param argument Support information for the template - type, name, contact information
     */
    @JvmName("vnckvboqupofgoqb")
    public suspend fun support(argument: suspend MetadataSupportArgsBuilder.() -> Unit) {
        val toBeMapped = MetadataSupportArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.support = mapped
    }

    /**
     * @param value template Id
     */
    @JvmName("jexryexlxqlprpyd")
    public suspend fun templateId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.templateId = mapped
    }

    /**
     * @param value the tactics the resource covers
     */
    @JvmName("lyfhsbsvstqflbst")
    public suspend fun threatAnalysisTactics(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.threatAnalysisTactics = mapped
    }

    /**
     * @param values the tactics the resource covers
     */
    @JvmName("lbkpvpfbxpwgdedw")
    public suspend fun threatAnalysisTactics(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.threatAnalysisTactics = mapped
    }

    /**
     * @param value the techniques the resource covers, these have to be aligned with the tactics being used
     */
    @JvmName("odnkhhoosfpfatrs")
    public suspend fun threatAnalysisTechniques(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.threatAnalysisTechniques = mapped
    }

    /**
     * @param values the techniques the resource covers, these have to be aligned with the tactics being used
     */
    @JvmName("xkoynquxcvpfhrut")
    public suspend fun threatAnalysisTechniques(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.threatAnalysisTechniques = mapped
    }

    /**
     * @param value Version of the content.  Default and recommended format is numeric (e.g. 1, 1.0, 1.0.0, 1.0.0.0), following ARM metadata best practices.  Can also be any string, but then we cannot guarantee any version checks
     */
    @JvmName("homysmqqpfdcmbbc")
    public suspend fun version(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.version = mapped
    }

    /**
     * @param value The name of the workspace.
     */
    @JvmName("qxncbxkqmjfwpbyw")
    public suspend fun workspaceName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.workspaceName = mapped
    }

    internal fun build(): ContentTemplateArgs = ContentTemplateArgs(
        author = author,
        categories = categories,
        contentId = contentId,
        contentKind = contentKind,
        contentSchemaVersion = contentSchemaVersion,
        customVersion = customVersion,
        dependencies = dependencies,
        displayName = displayName,
        firstPublishDate = firstPublishDate,
        icon = icon,
        lastPublishDate = lastPublishDate,
        mainTemplate = mainTemplate,
        packageId = packageId,
        packageKind = packageKind,
        packageName = packageName,
        previewImages = previewImages,
        previewImagesDark = previewImagesDark,
        providers = providers,
        resourceGroupName = resourceGroupName,
        source = source,
        support = support,
        templateId = templateId,
        threatAnalysisTactics = threatAnalysisTactics,
        threatAnalysisTechniques = threatAnalysisTechniques,
        version = version,
        workspaceName = workspaceName,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy