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

com.pulumi.awsnative.qbusiness.kotlin.ApplicationArgs.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.qbusiness.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.qbusiness.ApplicationArgs.builder
import com.pulumi.awsnative.qbusiness.kotlin.enums.ApplicationIdentityType
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationAttachmentsConfigurationArgs
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationAttachmentsConfigurationArgsBuilder
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationAutoSubscriptionConfigurationArgs
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationAutoSubscriptionConfigurationArgsBuilder
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationEncryptionConfigurationArgs
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationEncryptionConfigurationArgsBuilder
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationPersonalizationConfigurationArgs
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationPersonalizationConfigurationArgsBuilder
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationQAppsConfigurationArgs
import com.pulumi.awsnative.qbusiness.kotlin.inputs.ApplicationQAppsConfigurationArgsBuilder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Definition of AWS::QBusiness::Application Resource Type
 * @property attachmentsConfiguration Configuration information for the file upload during chat feature.
 * @property autoSubscriptionConfiguration Subscription configuration information for an Amazon Q Business application using IAM identity federation for user management.
 * @property clientIdsForOidc
 * @property description A description for the Amazon Q Business application.
 * @property displayName The name of the Amazon Q Business application.
 * @property encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business. Amazon Q Business doesn't support asymmetric keys.
 * @property iamIdentityProviderArn The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business application.
 * @property identityCenterInstanceArn The Amazon Resource Name (ARN) of the IAM Identity Center instance you are either creating for—or connecting to—your Amazon Q Business application.
 * *Required* : `Yes`
 * @property identityType The authentication type being used by a Amazon Q Business application.
 * @property personalizationConfiguration Configuration information about chat response personalization. For more information, see [Personalizing chat responses](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/personalizing-chat-responses.html) .
 * @property qAppsConfiguration Configuration information about Amazon Q Apps.
 * @property roleArn The Amazon Resource Name (ARN) of an IAM role with permissions to access your Amazon CloudWatch logs and metrics. If this property is not specified, Amazon Q Business will create a [service linked role (SLR)](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/using-service-linked-roles.html#slr-permissions) and use it as the application's role.
 * @property tags A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
 */
public data class ApplicationArgs(
    public val attachmentsConfiguration: Output? = null,
    public val autoSubscriptionConfiguration: Output? =
        null,
    public val clientIdsForOidc: Output>? = null,
    public val description: Output? = null,
    public val displayName: Output? = null,
    public val encryptionConfiguration: Output? = null,
    public val iamIdentityProviderArn: Output? = null,
    public val identityCenterInstanceArn: Output? = null,
    public val identityType: Output? = null,
    public val personalizationConfiguration: Output? =
        null,
    public val qAppsConfiguration: Output? = null,
    public val roleArn: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.qbusiness.ApplicationArgs =
        com.pulumi.awsnative.qbusiness.ApplicationArgs.builder()
            .attachmentsConfiguration(
                attachmentsConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .autoSubscriptionConfiguration(
                autoSubscriptionConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .clientIdsForOidc(clientIdsForOidc?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .description(description?.applyValue({ args0 -> args0 }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .encryptionConfiguration(
                encryptionConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .iamIdentityProviderArn(iamIdentityProviderArn?.applyValue({ args0 -> args0 }))
            .identityCenterInstanceArn(identityCenterInstanceArn?.applyValue({ args0 -> args0 }))
            .identityType(identityType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .personalizationConfiguration(
                personalizationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .qAppsConfiguration(
                qAppsConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .roleArn(roleArn?.applyValue({ args0 -> args0 }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [ApplicationArgs].
 */
@PulumiTagMarker
public class ApplicationArgsBuilder internal constructor() {
    private var attachmentsConfiguration: Output? = null

    private var autoSubscriptionConfiguration: Output? =
        null

    private var clientIdsForOidc: Output>? = null

    private var description: Output? = null

    private var displayName: Output? = null

    private var encryptionConfiguration: Output? = null

    private var iamIdentityProviderArn: Output? = null

    private var identityCenterInstanceArn: Output? = null

    private var identityType: Output? = null

    private var personalizationConfiguration: Output? =
        null

    private var qAppsConfiguration: Output? = null

    private var roleArn: Output? = null

    private var tags: Output>? = null

    /**
     * @param value Configuration information for the file upload during chat feature.
     */
    @JvmName("peeotuwpflptjosp")
    public suspend fun attachmentsConfiguration(`value`: Output) {
        this.attachmentsConfiguration = value
    }

    /**
     * @param value Subscription configuration information for an Amazon Q Business application using IAM identity federation for user management.
     */
    @JvmName("wbecgglthwymorvm")
    public suspend fun autoSubscriptionConfiguration(`value`: Output) {
        this.autoSubscriptionConfiguration = value
    }

    /**
     * @param value
     */
    @JvmName("jfftvvlwsmfoedyc")
    public suspend fun clientIdsForOidc(`value`: Output>) {
        this.clientIdsForOidc = value
    }

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

    /**
     * @param values
     */
    @JvmName("msinrmaonokbfyuu")
    public suspend fun clientIdsForOidc(values: List>) {
        this.clientIdsForOidc = Output.all(values)
    }

    /**
     * @param value A description for the Amazon Q Business application.
     */
    @JvmName("ktvihymlyurbchjj")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The name of the Amazon Q Business application.
     */
    @JvmName("gmxsyyxtchpbskfc")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business. Amazon Q Business doesn't support asymmetric keys.
     */
    @JvmName("rdrtshfnhpmeioqh")
    public suspend fun encryptionConfiguration(`value`: Output) {
        this.encryptionConfiguration = value
    }

    /**
     * @param value The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business application.
     */
    @JvmName("kfjtdvmwstnxvgky")
    public suspend fun iamIdentityProviderArn(`value`: Output) {
        this.iamIdentityProviderArn = value
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the IAM Identity Center instance you are either creating for—or connecting to—your Amazon Q Business application.
     * *Required* : `Yes`
     */
    @JvmName("frrvapifxpbaxycc")
    public suspend fun identityCenterInstanceArn(`value`: Output) {
        this.identityCenterInstanceArn = value
    }

    /**
     * @param value The authentication type being used by a Amazon Q Business application.
     */
    @JvmName("okmwdoklqokgxxsg")
    public suspend fun identityType(`value`: Output) {
        this.identityType = value
    }

    /**
     * @param value Configuration information about chat response personalization. For more information, see [Personalizing chat responses](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/personalizing-chat-responses.html) .
     */
    @JvmName("pajfbwqeifjxvvxn")
    public suspend fun personalizationConfiguration(`value`: Output) {
        this.personalizationConfiguration = value
    }

    /**
     * @param value Configuration information about Amazon Q Apps.
     */
    @JvmName("ebwlkdpsamcqbtyt")
    public suspend fun qAppsConfiguration(`value`: Output) {
        this.qAppsConfiguration = value
    }

    /**
     * @param value The Amazon Resource Name (ARN) of an IAM role with permissions to access your Amazon CloudWatch logs and metrics. If this property is not specified, Amazon Q Business will create a [service linked role (SLR)](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/using-service-linked-roles.html#slr-permissions) and use it as the application's role.
     */
    @JvmName("wjcfdvxkgfhrsrdl")
    public suspend fun roleArn(`value`: Output) {
        this.roleArn = value
    }

    /**
     * @param value A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("lujqpdfjodqgdgat")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("rybpjqvwcqseuovp")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value Configuration information for the file upload during chat feature.
     */
    @JvmName("kosuqvxuqcnqmikb")
    public suspend fun attachmentsConfiguration(`value`: ApplicationAttachmentsConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.attachmentsConfiguration = mapped
    }

    /**
     * @param argument Configuration information for the file upload during chat feature.
     */
    @JvmName("ptxowntccboxwrdd")
    public suspend fun attachmentsConfiguration(argument: suspend ApplicationAttachmentsConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ApplicationAttachmentsConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.attachmentsConfiguration = mapped
    }

    /**
     * @param value Subscription configuration information for an Amazon Q Business application using IAM identity federation for user management.
     */
    @JvmName("trpifscdiyrwkgpb")
    public suspend fun autoSubscriptionConfiguration(`value`: ApplicationAutoSubscriptionConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoSubscriptionConfiguration = mapped
    }

    /**
     * @param argument Subscription configuration information for an Amazon Q Business application using IAM identity federation for user management.
     */
    @JvmName("qgofnduotixpkecp")
    public suspend fun autoSubscriptionConfiguration(argument: suspend ApplicationAutoSubscriptionConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ApplicationAutoSubscriptionConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.autoSubscriptionConfiguration = mapped
    }

    /**
     * @param value
     */
    @JvmName("lufpampblhfwwbpl")
    public suspend fun clientIdsForOidc(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.clientIdsForOidc = mapped
    }

    /**
     * @param values
     */
    @JvmName("ujrjnoqphrwahmsi")
    public suspend fun clientIdsForOidc(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.clientIdsForOidc = mapped
    }

    /**
     * @param value A description for the Amazon Q Business application.
     */
    @JvmName("dsysbfqjiicfyxcb")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

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

    /**
     * @param value Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business. Amazon Q Business doesn't support asymmetric keys.
     */
    @JvmName("ialcpdxcaeajijtm")
    public suspend fun encryptionConfiguration(`value`: ApplicationEncryptionConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionConfiguration = mapped
    }

    /**
     * @param argument Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business. Amazon Q Business doesn't support asymmetric keys.
     */
    @JvmName("kqgoyhykeejpnjpw")
    public suspend fun encryptionConfiguration(argument: suspend ApplicationEncryptionConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ApplicationEncryptionConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.encryptionConfiguration = mapped
    }

    /**
     * @param value The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business application.
     */
    @JvmName("nrlurugmggfbjkhb")
    public suspend fun iamIdentityProviderArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.iamIdentityProviderArn = mapped
    }

    /**
     * @param value The Amazon Resource Name (ARN) of the IAM Identity Center instance you are either creating for—or connecting to—your Amazon Q Business application.
     * *Required* : `Yes`
     */
    @JvmName("ykpgcuyqhmrhrkil")
    public suspend fun identityCenterInstanceArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.identityCenterInstanceArn = mapped
    }

    /**
     * @param value The authentication type being used by a Amazon Q Business application.
     */
    @JvmName("mckstdktypaxjisx")
    public suspend fun identityType(`value`: ApplicationIdentityType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.identityType = mapped
    }

    /**
     * @param value Configuration information about chat response personalization. For more information, see [Personalizing chat responses](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/personalizing-chat-responses.html) .
     */
    @JvmName("wbhoffovgirrcugm")
    public suspend fun personalizationConfiguration(`value`: ApplicationPersonalizationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.personalizationConfiguration = mapped
    }

    /**
     * @param argument Configuration information about chat response personalization. For more information, see [Personalizing chat responses](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/personalizing-chat-responses.html) .
     */
    @JvmName("vjjeopifnqomcqub")
    public suspend fun personalizationConfiguration(argument: suspend ApplicationPersonalizationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ApplicationPersonalizationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.personalizationConfiguration = mapped
    }

    /**
     * @param value Configuration information about Amazon Q Apps.
     */
    @JvmName("fadgiiaeigmuahsu")
    public suspend fun qAppsConfiguration(`value`: ApplicationQAppsConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.qAppsConfiguration = mapped
    }

    /**
     * @param argument Configuration information about Amazon Q Apps.
     */
    @JvmName("npsfncbmlxfyefqg")
    public suspend fun qAppsConfiguration(argument: suspend ApplicationQAppsConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = ApplicationQAppsConfigurationArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.qAppsConfiguration = mapped
    }

    /**
     * @param value The Amazon Resource Name (ARN) of an IAM role with permissions to access your Amazon CloudWatch logs and metrics. If this property is not specified, Amazon Q Business will create a [service linked role (SLR)](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/using-service-linked-roles.html#slr-permissions) and use it as the application's role.
     */
    @JvmName("vlukajkwbkyrevwi")
    public suspend fun roleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.roleArn = mapped
    }

    /**
     * @param value A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("qsighjqpctrjkmsc")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("vthjfogowlaehkxh")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("uvajxqofatdveyob")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("hrqsljatsnayeknu")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values A list of key-value pairs that identify or categorize your Amazon Q Business application. You can also use tags to help control access to the application. Tag keys and values can consist of Unicode letters, digits, white space, and any of the following symbols: _ . : / = + - @.
     */
    @JvmName("yiuceisgoumdvqga")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): ApplicationArgs = ApplicationArgs(
        attachmentsConfiguration = attachmentsConfiguration,
        autoSubscriptionConfiguration = autoSubscriptionConfiguration,
        clientIdsForOidc = clientIdsForOidc,
        description = description,
        displayName = displayName,
        encryptionConfiguration = encryptionConfiguration,
        iamIdentityProviderArn = iamIdentityProviderArn,
        identityCenterInstanceArn = identityCenterInstanceArn,
        identityType = identityType,
        personalizationConfiguration = personalizationConfiguration,
        qAppsConfiguration = qAppsConfiguration,
        roleArn = roleArn,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy