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

io.cloudshiftdev.awscdk.services.qbusiness.CfnApplication.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.qbusiness

import io.cloudshiftdev.awscdk.CfnResource
import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IInspectable
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.ITaggableV2
import io.cloudshiftdev.awscdk.TagManager
import io.cloudshiftdev.awscdk.TreeInspector
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName
import io.cloudshiftdev.constructs.Construct as CloudshiftdevConstructsConstruct
import software.constructs.Construct as SoftwareConstructsConstruct

/**
 * Creates an Amazon Q Business application.
 *
 *
 * There are new tiers for Amazon Q Business. Not all features in Amazon Q Business Pro are also
 * available in Amazon Q Business Lite. For information on what's included in Amazon Q Business Lite
 * and what's included in Amazon Q Business Pro, see [Amazon Q Business
 * tiers](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/tiers.html#user-sub-tiers) . You must
 * use the Amazon Q Business console to assign subscription tiers to users.
 *
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.qbusiness.*;
 * CfnApplication cfnApplication = CfnApplication.Builder.create(this, "MyCfnApplication")
 * .displayName("displayName")
 * // the properties below are optional
 * .attachmentsConfiguration(AttachmentsConfigurationProperty.builder()
 * .attachmentsControlMode("attachmentsControlMode")
 * .build())
 * .autoSubscriptionConfiguration(AutoSubscriptionConfigurationProperty.builder()
 * .autoSubscribe("autoSubscribe")
 * // the properties below are optional
 * .defaultSubscriptionType("defaultSubscriptionType")
 * .build())
 * .clientIdsForOidc(List.of("clientIdsForOidc"))
 * .description("description")
 * .encryptionConfiguration(EncryptionConfigurationProperty.builder()
 * .kmsKeyId("kmsKeyId")
 * .build())
 * .iamIdentityProviderArn("iamIdentityProviderArn")
 * .identityCenterInstanceArn("identityCenterInstanceArn")
 * .identityType("identityType")
 * .personalizationConfiguration(PersonalizationConfigurationProperty.builder()
 * .personalizationControlMode("personalizationControlMode")
 * .build())
 * .qAppsConfiguration(QAppsConfigurationProperty.builder()
 * .qAppsControlMode("qAppsControlMode")
 * .build())
 * .roleArn("roleArn")
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html)
 */
public open class CfnApplication(
  cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication,
) : CfnResource(cdkObject),
    IInspectable,
    ITaggableV2 {
  public constructor(
    scope: CloudshiftdevConstructsConstruct,
    id: String,
    props: CfnApplicationProps,
  ) :
      this(software.amazon.awscdk.services.qbusiness.CfnApplication(scope.let(CloudshiftdevConstructsConstruct.Companion::unwrap),
      id, props.let(CfnApplicationProps.Companion::unwrap))
  )

  public constructor(
    scope: CloudshiftdevConstructsConstruct,
    id: String,
    props: CfnApplicationProps.Builder.() -> Unit,
  ) : this(scope, id, CfnApplicationProps(props)
  )

  /**
   * Configuration information for the file upload during chat feature.
   */
  public open fun attachmentsConfiguration(): Any? = unwrap(this).getAttachmentsConfiguration()

  /**
   * Configuration information for the file upload during chat feature.
   */
  public open fun attachmentsConfiguration(`value`: IResolvable) {
    unwrap(this).setAttachmentsConfiguration(`value`.let(IResolvable.Companion::unwrap))
  }

  /**
   * Configuration information for the file upload during chat feature.
   */
  public open fun attachmentsConfiguration(`value`: AttachmentsConfigurationProperty) {
    unwrap(this).setAttachmentsConfiguration(`value`.let(AttachmentsConfigurationProperty.Companion::unwrap))
  }

  /**
   * Configuration information for the file upload during chat feature.
   */
  @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
  @JvmName("15aa78d44bc3c78832a41e80730f4a2d3b6834b823b7556fcad660a170314190")
  public open
      fun attachmentsConfiguration(`value`: AttachmentsConfigurationProperty.Builder.() -> Unit):
      Unit = attachmentsConfiguration(AttachmentsConfigurationProperty(`value`))

  /**
   * The Amazon Resource Name (ARN) of the Amazon Q Business application.
   */
  public open fun attrApplicationArn(): String = unwrap(this).getAttrApplicationArn()

  /**
   * The identifier for the Amazon Q Business application.
   */
  public open fun attrApplicationId(): String = unwrap(this).getAttrApplicationId()

  /**
   * The Unix timestamp when the Amazon Q Business application was created.
   */
  public open fun attrCreatedAt(): String = unwrap(this).getAttrCreatedAt()

  /**
   * The Amazon Resource Name (ARN) of the AWS IAM Identity Center instance attached to your Amazon
   * Q Business application.
   */
  public open fun attrIdentityCenterApplicationArn(): String =
      unwrap(this).getAttrIdentityCenterApplicationArn()

  /**
   * The status of the Amazon Q Business application.
   *
   * The application is ready to use when the status is `ACTIVE` .
   */
  public open fun attrStatus(): String = unwrap(this).getAttrStatus()

  /**
   * The Unix timestamp when the Amazon Q Business application was last updated.
   */
  public open fun attrUpdatedAt(): String = unwrap(this).getAttrUpdatedAt()

  /**
   * Subscription configuration information for an Amazon Q Business application using IAM identity
   * federation for user management.
   */
  public open fun autoSubscriptionConfiguration(): Any? =
      unwrap(this).getAutoSubscriptionConfiguration()

  /**
   * Subscription configuration information for an Amazon Q Business application using IAM identity
   * federation for user management.
   */
  public open fun autoSubscriptionConfiguration(`value`: IResolvable) {
    unwrap(this).setAutoSubscriptionConfiguration(`value`.let(IResolvable.Companion::unwrap))
  }

  /**
   * Subscription configuration information for an Amazon Q Business application using IAM identity
   * federation for user management.
   */
  public open fun autoSubscriptionConfiguration(`value`: AutoSubscriptionConfigurationProperty) {
    unwrap(this).setAutoSubscriptionConfiguration(`value`.let(AutoSubscriptionConfigurationProperty.Companion::unwrap))
  }

  /**
   * Subscription configuration information for an Amazon Q Business application using IAM identity
   * federation for user management.
   */
  @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
  @JvmName("f4b9dfff125a5f6b85a64494b00ef3a2a576b9677453ad36a2861135709b59c5")
  public open
      fun autoSubscriptionConfiguration(`value`: AutoSubscriptionConfigurationProperty.Builder.() -> Unit):
      Unit = autoSubscriptionConfiguration(AutoSubscriptionConfigurationProperty(`value`))

  /**
   * Tag Manager which manages the tags for this resource.
   */
  public override fun cdkTagManager(): TagManager =
      unwrap(this).getCdkTagManager().let(TagManager::wrap)

  /**
   *
   */
  public open fun clientIdsForOidc(): List = unwrap(this).getClientIdsForOidc() ?:
      emptyList()

  /**
   *
   */
  public open fun clientIdsForOidc(`value`: List) {
    unwrap(this).setClientIdsForOidc(`value`)
  }

  /**
   *
   */
  public open fun clientIdsForOidc(vararg `value`: String): Unit =
      clientIdsForOidc(`value`.toList())

  /**
   * A description for the Amazon Q Business application.
   */
  public open fun description(): String? = unwrap(this).getDescription()

  /**
   * A description for the Amazon Q Business application.
   */
  public open fun description(`value`: String) {
    unwrap(this).setDescription(`value`)
  }

  /**
   * The name of the Amazon Q Business application.
   */
  public open fun displayName(): String = unwrap(this).getDisplayName()

  /**
   * The name of the Amazon Q Business application.
   */
  public open fun displayName(`value`: String) {
    unwrap(this).setDisplayName(`value`)
  }

  /**
   * Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business.
   */
  public open fun encryptionConfiguration(): Any? = unwrap(this).getEncryptionConfiguration()

  /**
   * Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business.
   */
  public open fun encryptionConfiguration(`value`: IResolvable) {
    unwrap(this).setEncryptionConfiguration(`value`.let(IResolvable.Companion::unwrap))
  }

  /**
   * Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business.
   */
  public open fun encryptionConfiguration(`value`: EncryptionConfigurationProperty) {
    unwrap(this).setEncryptionConfiguration(`value`.let(EncryptionConfigurationProperty.Companion::unwrap))
  }

  /**
   * Provides the identifier of the AWS KMS key used to encrypt data indexed by Amazon Q Business.
   */
  @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
  @JvmName("243e720f80b1d275992cfe36234150694e42406a3507c37ba3fc0d22a92679d9")
  public open
      fun encryptionConfiguration(`value`: EncryptionConfigurationProperty.Builder.() -> Unit): Unit
      = encryptionConfiguration(EncryptionConfigurationProperty(`value`))

  /**
   * The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business
   * application.
   */
  public open fun iamIdentityProviderArn(): String? = unwrap(this).getIamIdentityProviderArn()

  /**
   * The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business
   * application.
   */
  public open fun iamIdentityProviderArn(`value`: String) {
    unwrap(this).setIamIdentityProviderArn(`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.
   */
  public open fun identityCenterInstanceArn(): String? = unwrap(this).getIdentityCenterInstanceArn()

  /**
   * The Amazon Resource Name (ARN) of the IAM Identity Center instance you are either creating
   * for—or connecting to—your Amazon Q Business application.
   */
  public open fun identityCenterInstanceArn(`value`: String) {
    unwrap(this).setIdentityCenterInstanceArn(`value`)
  }

  /**
   * The authentication type being used by a Amazon Q Business application.
   */
  public open fun identityType(): String? = unwrap(this).getIdentityType()

  /**
   * The authentication type being used by a Amazon Q Business application.
   */
  public open fun identityType(`value`: String) {
    unwrap(this).setIdentityType(`value`)
  }

  /**
   * Examines the CloudFormation resource and discloses attributes.
   *
   * @param inspector tree inspector to collect and process attributes. 
   */
  public override fun inspect(inspector: TreeInspector) {
    unwrap(this).inspect(inspector.let(TreeInspector.Companion::unwrap))
  }

  /**
   * Configuration information about chat response personalization.
   */
  public open fun personalizationConfiguration(): Any? =
      unwrap(this).getPersonalizationConfiguration()

  /**
   * Configuration information about chat response personalization.
   */
  public open fun personalizationConfiguration(`value`: IResolvable) {
    unwrap(this).setPersonalizationConfiguration(`value`.let(IResolvable.Companion::unwrap))
  }

  /**
   * Configuration information about chat response personalization.
   */
  public open fun personalizationConfiguration(`value`: PersonalizationConfigurationProperty) {
    unwrap(this).setPersonalizationConfiguration(`value`.let(PersonalizationConfigurationProperty.Companion::unwrap))
  }

  /**
   * Configuration information about chat response personalization.
   */
  @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
  @JvmName("4990eba6966199da8fd00c7cd5f3b115ee1424820cfcec14377c4b7a9b660a43")
  public open
      fun personalizationConfiguration(`value`: PersonalizationConfigurationProperty.Builder.() -> Unit):
      Unit = personalizationConfiguration(PersonalizationConfigurationProperty(`value`))

  /**
   * Configuration information about Amazon Q Apps.
   */
  public open fun qAppsConfiguration(): Any? = unwrap(this).getQAppsConfiguration()

  /**
   * Configuration information about Amazon Q Apps.
   */
  public open fun qAppsConfiguration(`value`: IResolvable) {
    unwrap(this).setQAppsConfiguration(`value`.let(IResolvable.Companion::unwrap))
  }

  /**
   * Configuration information about Amazon Q Apps.
   */
  public open fun qAppsConfiguration(`value`: QAppsConfigurationProperty) {
    unwrap(this).setQAppsConfiguration(`value`.let(QAppsConfigurationProperty.Companion::unwrap))
  }

  /**
   * Configuration information about Amazon Q Apps.
   */
  @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
  @JvmName("79235a0f08f2baca595fdfb9e16db30ab8ccb83164bbef788f7b444322a2f759")
  public open fun qAppsConfiguration(`value`: QAppsConfigurationProperty.Builder.() -> Unit): Unit =
      qAppsConfiguration(QAppsConfigurationProperty(`value`))

  /**
   * The Amazon Resource Name (ARN) of an IAM role with permissions to access your Amazon CloudWatch
   * logs and metrics.
   */
  public open fun roleArn(): String? = unwrap(this).getRoleArn()

  /**
   * The Amazon Resource Name (ARN) of an IAM role with permissions to access your Amazon CloudWatch
   * logs and metrics.
   */
  public open fun roleArn(`value`: String) {
    unwrap(this).setRoleArn(`value`)
  }

  /**
   * A list of key-value pairs that identify or categorize your Amazon Q Business application.
   */
  public open fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * A list of key-value pairs that identify or categorize your Amazon Q Business application.
   */
  public open fun tags(`value`: List) {
    unwrap(this).setTags(`value`.map(CfnTag.Companion::unwrap))
  }

  /**
   * A list of key-value pairs that identify or categorize your Amazon Q Business application.
   */
  public open fun tags(vararg `value`: CfnTag): Unit = tags(`value`.toList())

  /**
   * A fluent builder for [io.cloudshiftdev.awscdk.services.qbusiness.CfnApplication].
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    public fun attachmentsConfiguration(attachmentsConfiguration: IResolvable)

    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    public fun attachmentsConfiguration(attachmentsConfiguration: AttachmentsConfigurationProperty)

    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("d76d3e55c3a81ef8356d1e1311fe80b80d2b93a375ea96af0e0918fdafd9c8b0")
    public
        fun attachmentsConfiguration(attachmentsConfiguration: AttachmentsConfigurationProperty.Builder.() -> Unit)

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    public fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: IResolvable)

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    public
        fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: AutoSubscriptionConfigurationProperty)

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("73b46452e93301e523cca2efde02d08f65ddfd8d0d629d4ae217f8a89bfe835a")
    public
        fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: AutoSubscriptionConfigurationProperty.Builder.() -> Unit)

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-clientidsforoidc)
     * @param clientIdsForOidc 
     */
    public fun clientIdsForOidc(clientIdsForOidc: List)

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-clientidsforoidc)
     * @param clientIdsForOidc 
     */
    public fun clientIdsForOidc(vararg clientIdsForOidc: String)

    /**
     * A description for the Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-description)
     * @param description A description for the Amazon Q Business application. 
     */
    public fun description(description: String)

    /**
     * The name of the Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-displayname)
     * @param displayName The name of the Amazon Q Business application. 
     */
    public fun displayName(displayName: String)

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    public fun encryptionConfiguration(encryptionConfiguration: IResolvable)

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    public fun encryptionConfiguration(encryptionConfiguration: EncryptionConfigurationProperty)

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b7532e7479f98c4d9c61e749161a682697696dbbe1cac6f86e91e8b260d51ade")
    public
        fun encryptionConfiguration(encryptionConfiguration: EncryptionConfigurationProperty.Builder.() -> Unit)

    /**
     * The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business
     * application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-iamidentityproviderarn)
     * @param iamIdentityProviderArn The Amazon Resource Name (ARN) of an identity provider being
     * used by an Amazon Q Business application. 
     */
    public fun iamIdentityProviderArn(iamIdentityProviderArn: String)

    /**
     * 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`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-identitycenterinstancearn)
     * @param 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. 
     */
    public fun identityCenterInstanceArn(identityCenterInstanceArn: String)

    /**
     * The authentication type being used by a Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-identitytype)
     * @param identityType The authentication type being used by a Amazon Q Business application. 
     */
    public fun identityType(identityType: String)

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    public fun personalizationConfiguration(personalizationConfiguration: IResolvable)

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    public
        fun personalizationConfiguration(personalizationConfiguration: PersonalizationConfigurationProperty)

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7c807dd83e492a3b787d1770fb65e375aa16ca1d41bce3e5ff1e1335907dce19")
    public
        fun personalizationConfiguration(personalizationConfiguration: PersonalizationConfigurationProperty.Builder.() -> Unit)

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    public fun qAppsConfiguration(qAppsConfiguration: IResolvable)

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    public fun qAppsConfiguration(qAppsConfiguration: QAppsConfigurationProperty)

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("18c33300a4beb62d94a4640db416caae57f9a57dcf8f63c04decb4be4270a95f")
    public fun qAppsConfiguration(qAppsConfiguration: QAppsConfigurationProperty.Builder.() -> Unit)

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-rolearn)
     * @param roleArn The Amazon Resource Name (ARN) of an IAM role with permissions to access your
     * Amazon CloudWatch logs and metrics. 
     */
    public fun roleArn(roleArn: String)

    /**
     * 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: _ . : / = + -
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-tags)
     * @param tags A list of key-value pairs that identify or categorize your Amazon Q Business
     * application. 
     */
    public fun tags(tags: List)

    /**
     * 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: _ . : / = + -
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-tags)
     * @param tags A list of key-value pairs that identify or categorize your Amazon Q Business
     * application. 
     */
    public fun tags(vararg tags: CfnTag)
  }

  private class BuilderImpl(
    scope: SoftwareConstructsConstruct,
    id: String,
  ) : Builder {
    private val cdkBuilder: software.amazon.awscdk.services.qbusiness.CfnApplication.Builder =
        software.amazon.awscdk.services.qbusiness.CfnApplication.Builder.create(scope, id)

    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    override fun attachmentsConfiguration(attachmentsConfiguration: IResolvable) {
      cdkBuilder.attachmentsConfiguration(attachmentsConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    override
        fun attachmentsConfiguration(attachmentsConfiguration: AttachmentsConfigurationProperty) {
      cdkBuilder.attachmentsConfiguration(attachmentsConfiguration.let(AttachmentsConfigurationProperty.Companion::unwrap))
    }

    /**
     * Configuration information for the file upload during chat feature.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-attachmentsconfiguration)
     * @param attachmentsConfiguration Configuration information for the file upload during chat
     * feature. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("d76d3e55c3a81ef8356d1e1311fe80b80d2b93a375ea96af0e0918fdafd9c8b0")
    override
        fun attachmentsConfiguration(attachmentsConfiguration: AttachmentsConfigurationProperty.Builder.() -> Unit):
        Unit = attachmentsConfiguration(AttachmentsConfigurationProperty(attachmentsConfiguration))

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    override fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: IResolvable) {
      cdkBuilder.autoSubscriptionConfiguration(autoSubscriptionConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    override
        fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: AutoSubscriptionConfigurationProperty) {
      cdkBuilder.autoSubscriptionConfiguration(autoSubscriptionConfiguration.let(AutoSubscriptionConfigurationProperty.Companion::unwrap))
    }

    /**
     * Subscription configuration information for an Amazon Q Business application using IAM
     * identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-autosubscriptionconfiguration)
     * @param autoSubscriptionConfiguration Subscription configuration information for an Amazon Q
     * Business application using IAM identity federation for user management. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("73b46452e93301e523cca2efde02d08f65ddfd8d0d629d4ae217f8a89bfe835a")
    override
        fun autoSubscriptionConfiguration(autoSubscriptionConfiguration: AutoSubscriptionConfigurationProperty.Builder.() -> Unit):
        Unit =
        autoSubscriptionConfiguration(AutoSubscriptionConfigurationProperty(autoSubscriptionConfiguration))

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-clientidsforoidc)
     * @param clientIdsForOidc 
     */
    override fun clientIdsForOidc(clientIdsForOidc: List) {
      cdkBuilder.clientIdsForOidc(clientIdsForOidc)
    }

    /**
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-clientidsforoidc)
     * @param clientIdsForOidc 
     */
    override fun clientIdsForOidc(vararg clientIdsForOidc: String): Unit =
        clientIdsForOidc(clientIdsForOidc.toList())

    /**
     * A description for the Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-description)
     * @param description A description for the Amazon Q Business application. 
     */
    override fun description(description: String) {
      cdkBuilder.description(description)
    }

    /**
     * The name of the Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-displayname)
     * @param displayName The name of the Amazon Q Business application. 
     */
    override fun displayName(displayName: String) {
      cdkBuilder.displayName(displayName)
    }

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    override fun encryptionConfiguration(encryptionConfiguration: IResolvable) {
      cdkBuilder.encryptionConfiguration(encryptionConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    override fun encryptionConfiguration(encryptionConfiguration: EncryptionConfigurationProperty) {
      cdkBuilder.encryptionConfiguration(encryptionConfiguration.let(EncryptionConfigurationProperty.Companion::unwrap))
    }

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-encryptionconfiguration)
     * @param encryptionConfiguration Provides the identifier of the AWS KMS key used to encrypt
     * data indexed by Amazon Q Business. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b7532e7479f98c4d9c61e749161a682697696dbbe1cac6f86e91e8b260d51ade")
    override
        fun encryptionConfiguration(encryptionConfiguration: EncryptionConfigurationProperty.Builder.() -> Unit):
        Unit = encryptionConfiguration(EncryptionConfigurationProperty(encryptionConfiguration))

    /**
     * The Amazon Resource Name (ARN) of an identity provider being used by an Amazon Q Business
     * application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-iamidentityproviderarn)
     * @param iamIdentityProviderArn The Amazon Resource Name (ARN) of an identity provider being
     * used by an Amazon Q Business application. 
     */
    override fun iamIdentityProviderArn(iamIdentityProviderArn: String) {
      cdkBuilder.iamIdentityProviderArn(iamIdentityProviderArn)
    }

    /**
     * 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`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-identitycenterinstancearn)
     * @param 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. 
     */
    override fun identityCenterInstanceArn(identityCenterInstanceArn: String) {
      cdkBuilder.identityCenterInstanceArn(identityCenterInstanceArn)
    }

    /**
     * The authentication type being used by a Amazon Q Business application.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-identitytype)
     * @param identityType The authentication type being used by a Amazon Q Business application. 
     */
    override fun identityType(identityType: String) {
      cdkBuilder.identityType(identityType)
    }

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    override fun personalizationConfiguration(personalizationConfiguration: IResolvable) {
      cdkBuilder.personalizationConfiguration(personalizationConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    override
        fun personalizationConfiguration(personalizationConfiguration: PersonalizationConfigurationProperty) {
      cdkBuilder.personalizationConfiguration(personalizationConfiguration.let(PersonalizationConfigurationProperty.Companion::unwrap))
    }

    /**
     * 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)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-personalizationconfiguration)
     * @param personalizationConfiguration Configuration information about chat response
     * personalization. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("7c807dd83e492a3b787d1770fb65e375aa16ca1d41bce3e5ff1e1335907dce19")
    override
        fun personalizationConfiguration(personalizationConfiguration: PersonalizationConfigurationProperty.Builder.() -> Unit):
        Unit =
        personalizationConfiguration(PersonalizationConfigurationProperty(personalizationConfiguration))

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    override fun qAppsConfiguration(qAppsConfiguration: IResolvable) {
      cdkBuilder.qAppsConfiguration(qAppsConfiguration.let(IResolvable.Companion::unwrap))
    }

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    override fun qAppsConfiguration(qAppsConfiguration: QAppsConfigurationProperty) {
      cdkBuilder.qAppsConfiguration(qAppsConfiguration.let(QAppsConfigurationProperty.Companion::unwrap))
    }

    /**
     * Configuration information about Amazon Q Apps.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-qappsconfiguration)
     * @param qAppsConfiguration Configuration information about Amazon Q Apps. 
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("18c33300a4beb62d94a4640db416caae57f9a57dcf8f63c04decb4be4270a95f")
    override
        fun qAppsConfiguration(qAppsConfiguration: QAppsConfigurationProperty.Builder.() -> Unit):
        Unit = qAppsConfiguration(QAppsConfigurationProperty(qAppsConfiguration))

    /**
     * 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.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-rolearn)
     * @param roleArn The Amazon Resource Name (ARN) of an IAM role with permissions to access your
     * Amazon CloudWatch logs and metrics. 
     */
    override fun roleArn(roleArn: String) {
      cdkBuilder.roleArn(roleArn)
    }

    /**
     * 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: _ . : / = + -
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-tags)
     * @param tags A list of key-value pairs that identify or categorize your Amazon Q Business
     * application. 
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * 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: _ . : / = + -
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qbusiness-application.html#cfn-qbusiness-application-tags)
     * @param tags A list of key-value pairs that identify or categorize your Amazon Q Business
     * application. 
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    public fun build(): software.amazon.awscdk.services.qbusiness.CfnApplication =
        cdkBuilder.build()
  }

  public companion object {
    public val CFN_RESOURCE_TYPE_NAME: String =
        software.amazon.awscdk.services.qbusiness.CfnApplication.CFN_RESOURCE_TYPE_NAME

    public operator fun invoke(
      scope: CloudshiftdevConstructsConstruct,
      id: String,
      block: Builder.() -> Unit = {},
    ): CfnApplication {
      val builderImpl = BuilderImpl(CloudshiftdevConstructsConstruct.unwrap(scope), id)
      return CfnApplication(builderImpl.apply(block).build())
    }

    internal fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication):
        CfnApplication = CfnApplication(cdkObject)

    internal fun unwrap(wrapped: CfnApplication):
        software.amazon.awscdk.services.qbusiness.CfnApplication = wrapped.cdkObject as
        software.amazon.awscdk.services.qbusiness.CfnApplication
  }

  /**
   * Configuration information for the file upload during chat feature.
   *
   * Example:
   *
   * ```
   * // The code below shows an example of how to instantiate this type.
   * // The values are placeholders you should change.
   * import io.cloudshiftdev.awscdk.services.qbusiness.*;
   * AttachmentsConfigurationProperty attachmentsConfigurationProperty =
   * AttachmentsConfigurationProperty.builder()
   * .attachmentsControlMode("attachmentsControlMode")
   * .build();
   * ```
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-attachmentsconfiguration.html)
   */
  public interface AttachmentsConfigurationProperty {
    /**
     * Status information about whether file upload functionality is activated or deactivated for
     * your end user.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-attachmentsconfiguration.html#cfn-qbusiness-application-attachmentsconfiguration-attachmentscontrolmode)
     */
    public fun attachmentsControlMode(): String

    /**
     * A builder for [AttachmentsConfigurationProperty]
     */
    @CdkDslMarker
    public interface Builder {
      /**
       * @param attachmentsControlMode Status information about whether file upload functionality is
       * activated or deactivated for your end user. 
       */
      public fun attachmentsControlMode(attachmentsControlMode: String)
    }

    private class BuilderImpl : Builder {
      private val cdkBuilder:
          software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty.Builder
          =
          software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty.builder()

      /**
       * @param attachmentsControlMode Status information about whether file upload functionality is
       * activated or deactivated for your end user. 
       */
      override fun attachmentsControlMode(attachmentsControlMode: String) {
        cdkBuilder.attachmentsControlMode(attachmentsControlMode)
      }

      public fun build():
          software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty
          = cdkBuilder.build()
    }

    private class Wrapper(
      cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty,
    ) : CdkObject(cdkObject),
        AttachmentsConfigurationProperty {
      /**
       * Status information about whether file upload functionality is activated or deactivated for
       * your end user.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-attachmentsconfiguration.html#cfn-qbusiness-application-attachmentsconfiguration-attachmentscontrolmode)
       */
      override fun attachmentsControlMode(): String = unwrap(this).getAttachmentsControlMode()
    }

    public companion object {
      public operator fun invoke(block: Builder.() -> Unit = {}): AttachmentsConfigurationProperty {
        val builderImpl = BuilderImpl()
        return Wrapper(builderImpl.apply(block).build())
      }

      internal
          fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty):
          AttachmentsConfigurationProperty = CdkObjectWrappers.wrap(cdkObject) as?
          AttachmentsConfigurationProperty ?: Wrapper(cdkObject)

      internal fun unwrap(wrapped: AttachmentsConfigurationProperty):
          software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty
          = (wrapped as CdkObject).cdkObject as
          software.amazon.awscdk.services.qbusiness.CfnApplication.AttachmentsConfigurationProperty
    }
  }

  /**
   * Subscription configuration information for an Amazon Q Business application using IAM identity
   * federation for user management.
   *
   * Example:
   *
   * ```
   * // The code below shows an example of how to instantiate this type.
   * // The values are placeholders you should change.
   * import io.cloudshiftdev.awscdk.services.qbusiness.*;
   * AutoSubscriptionConfigurationProperty autoSubscriptionConfigurationProperty =
   * AutoSubscriptionConfigurationProperty.builder()
   * .autoSubscribe("autoSubscribe")
   * // the properties below are optional
   * .defaultSubscriptionType("defaultSubscriptionType")
   * .build();
   * ```
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-autosubscriptionconfiguration.html)
   */
  public interface AutoSubscriptionConfigurationProperty {
    /**
     * Describes whether automatic subscriptions are enabled for an Amazon Q Business application
     * using IAM identity federation for user management.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-autosubscriptionconfiguration.html#cfn-qbusiness-application-autosubscriptionconfiguration-autosubscribe)
     */
    public fun autoSubscribe(): String

    /**
     * Describes the default subscription type assigned to an Amazon Q Business application using
     * IAM identity federation for user management.
     *
     * If the value for `autoSubscribe` is set to `ENABLED` you must select a value for this field.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-autosubscriptionconfiguration.html#cfn-qbusiness-application-autosubscriptionconfiguration-defaultsubscriptiontype)
     */
    public fun defaultSubscriptionType(): String? = unwrap(this).getDefaultSubscriptionType()

    /**
     * A builder for [AutoSubscriptionConfigurationProperty]
     */
    @CdkDslMarker
    public interface Builder {
      /**
       * @param autoSubscribe Describes whether automatic subscriptions are enabled for an Amazon Q
       * Business application using IAM identity federation for user management. 
       */
      public fun autoSubscribe(autoSubscribe: String)

      /**
       * @param defaultSubscriptionType Describes the default subscription type assigned to an
       * Amazon Q Business application using IAM identity federation for user management.
       * If the value for `autoSubscribe` is set to `ENABLED` you must select a value for this
       * field.
       */
      public fun defaultSubscriptionType(defaultSubscriptionType: String)
    }

    private class BuilderImpl : Builder {
      private val cdkBuilder:
          software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty.Builder
          =
          software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty.builder()

      /**
       * @param autoSubscribe Describes whether automatic subscriptions are enabled for an Amazon Q
       * Business application using IAM identity federation for user management. 
       */
      override fun autoSubscribe(autoSubscribe: String) {
        cdkBuilder.autoSubscribe(autoSubscribe)
      }

      /**
       * @param defaultSubscriptionType Describes the default subscription type assigned to an
       * Amazon Q Business application using IAM identity federation for user management.
       * If the value for `autoSubscribe` is set to `ENABLED` you must select a value for this
       * field.
       */
      override fun defaultSubscriptionType(defaultSubscriptionType: String) {
        cdkBuilder.defaultSubscriptionType(defaultSubscriptionType)
      }

      public fun build():
          software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty
          = cdkBuilder.build()
    }

    private class Wrapper(
      cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty,
    ) : CdkObject(cdkObject),
        AutoSubscriptionConfigurationProperty {
      /**
       * Describes whether automatic subscriptions are enabled for an Amazon Q Business application
       * using IAM identity federation for user management.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-autosubscriptionconfiguration.html#cfn-qbusiness-application-autosubscriptionconfiguration-autosubscribe)
       */
      override fun autoSubscribe(): String = unwrap(this).getAutoSubscribe()

      /**
       * Describes the default subscription type assigned to an Amazon Q Business application using
       * IAM identity federation for user management.
       *
       * If the value for `autoSubscribe` is set to `ENABLED` you must select a value for this
       * field.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-autosubscriptionconfiguration.html#cfn-qbusiness-application-autosubscriptionconfiguration-defaultsubscriptiontype)
       */
      override fun defaultSubscriptionType(): String? = unwrap(this).getDefaultSubscriptionType()
    }

    public companion object {
      public operator fun invoke(block: Builder.() -> Unit = {}):
          AutoSubscriptionConfigurationProperty {
        val builderImpl = BuilderImpl()
        return Wrapper(builderImpl.apply(block).build())
      }

      internal
          fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty):
          AutoSubscriptionConfigurationProperty = CdkObjectWrappers.wrap(cdkObject) as?
          AutoSubscriptionConfigurationProperty ?: Wrapper(cdkObject)

      internal fun unwrap(wrapped: AutoSubscriptionConfigurationProperty):
          software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty
          = (wrapped as CdkObject).cdkObject as
          software.amazon.awscdk.services.qbusiness.CfnApplication.AutoSubscriptionConfigurationProperty
    }
  }

  /**
   * 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.
   *
   * Example:
   *
   * ```
   * // The code below shows an example of how to instantiate this type.
   * // The values are placeholders you should change.
   * import io.cloudshiftdev.awscdk.services.qbusiness.*;
   * EncryptionConfigurationProperty encryptionConfigurationProperty =
   * EncryptionConfigurationProperty.builder()
   * .kmsKeyId("kmsKeyId")
   * .build();
   * ```
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-encryptionconfiguration.html)
   */
  public interface EncryptionConfigurationProperty {
    /**
     * The identifier of the AWS KMS key.
     *
     * Amazon Q Business doesn't support asymmetric keys.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-encryptionconfiguration.html#cfn-qbusiness-application-encryptionconfiguration-kmskeyid)
     */
    public fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()

    /**
     * A builder for [EncryptionConfigurationProperty]
     */
    @CdkDslMarker
    public interface Builder {
      /**
       * @param kmsKeyId The identifier of the AWS KMS key.
       * Amazon Q Business doesn't support asymmetric keys.
       */
      public fun kmsKeyId(kmsKeyId: String)
    }

    private class BuilderImpl : Builder {
      private val cdkBuilder:
          software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty.Builder
          =
          software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty.builder()

      /**
       * @param kmsKeyId The identifier of the AWS KMS key.
       * Amazon Q Business doesn't support asymmetric keys.
       */
      override fun kmsKeyId(kmsKeyId: String) {
        cdkBuilder.kmsKeyId(kmsKeyId)
      }

      public fun build():
          software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty =
          cdkBuilder.build()
    }

    private class Wrapper(
      cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty,
    ) : CdkObject(cdkObject),
        EncryptionConfigurationProperty {
      /**
       * The identifier of the AWS KMS key.
       *
       * Amazon Q Business doesn't support asymmetric keys.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-encryptionconfiguration.html#cfn-qbusiness-application-encryptionconfiguration-kmskeyid)
       */
      override fun kmsKeyId(): String? = unwrap(this).getKmsKeyId()
    }

    public companion object {
      public operator fun invoke(block: Builder.() -> Unit = {}): EncryptionConfigurationProperty {
        val builderImpl = BuilderImpl()
        return Wrapper(builderImpl.apply(block).build())
      }

      internal
          fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty):
          EncryptionConfigurationProperty = CdkObjectWrappers.wrap(cdkObject) as?
          EncryptionConfigurationProperty ?: Wrapper(cdkObject)

      internal fun unwrap(wrapped: EncryptionConfigurationProperty):
          software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty =
          (wrapped as CdkObject).cdkObject as
          software.amazon.awscdk.services.qbusiness.CfnApplication.EncryptionConfigurationProperty
    }
  }

  /**
   * 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)
   * .
   *
   * Example:
   *
   * ```
   * // The code below shows an example of how to instantiate this type.
   * // The values are placeholders you should change.
   * import io.cloudshiftdev.awscdk.services.qbusiness.*;
   * PersonalizationConfigurationProperty personalizationConfigurationProperty =
   * PersonalizationConfigurationProperty.builder()
   * .personalizationControlMode("personalizationControlMode")
   * .build();
   * ```
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-personalizationconfiguration.html)
   */
  public interface PersonalizationConfigurationProperty {
    /**
     * An option to allow Amazon Q Business to customize chat responses using user specific
     * metadata—specifically, location and job information—in your IAM Identity Center instance.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-personalizationconfiguration.html#cfn-qbusiness-application-personalizationconfiguration-personalizationcontrolmode)
     */
    public fun personalizationControlMode(): String

    /**
     * A builder for [PersonalizationConfigurationProperty]
     */
    @CdkDslMarker
    public interface Builder {
      /**
       * @param personalizationControlMode An option to allow Amazon Q Business to customize chat
       * responses using user specific metadata—specifically, location and job information—in your IAM
       * Identity Center instance. 
       */
      public fun personalizationControlMode(personalizationControlMode: String)
    }

    private class BuilderImpl : Builder {
      private val cdkBuilder:
          software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty.Builder
          =
          software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty.builder()

      /**
       * @param personalizationControlMode An option to allow Amazon Q Business to customize chat
       * responses using user specific metadata—specifically, location and job information—in your IAM
       * Identity Center instance. 
       */
      override fun personalizationControlMode(personalizationControlMode: String) {
        cdkBuilder.personalizationControlMode(personalizationControlMode)
      }

      public fun build():
          software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty
          = cdkBuilder.build()
    }

    private class Wrapper(
      cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty,
    ) : CdkObject(cdkObject),
        PersonalizationConfigurationProperty {
      /**
       * An option to allow Amazon Q Business to customize chat responses using user specific
       * metadata—specifically, location and job information—in your IAM Identity Center instance.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-personalizationconfiguration.html#cfn-qbusiness-application-personalizationconfiguration-personalizationcontrolmode)
       */
      override fun personalizationControlMode(): String =
          unwrap(this).getPersonalizationControlMode()
    }

    public companion object {
      public operator fun invoke(block: Builder.() -> Unit = {}):
          PersonalizationConfigurationProperty {
        val builderImpl = BuilderImpl()
        return Wrapper(builderImpl.apply(block).build())
      }

      internal
          fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty):
          PersonalizationConfigurationProperty = CdkObjectWrappers.wrap(cdkObject) as?
          PersonalizationConfigurationProperty ?: Wrapper(cdkObject)

      internal fun unwrap(wrapped: PersonalizationConfigurationProperty):
          software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty
          = (wrapped as CdkObject).cdkObject as
          software.amazon.awscdk.services.qbusiness.CfnApplication.PersonalizationConfigurationProperty
    }
  }

  /**
   * Configuration information about Amazon Q Apps.
   *
   * Example:
   *
   * ```
   * // The code below shows an example of how to instantiate this type.
   * // The values are placeholders you should change.
   * import io.cloudshiftdev.awscdk.services.qbusiness.*;
   * QAppsConfigurationProperty qAppsConfigurationProperty = QAppsConfigurationProperty.builder()
   * .qAppsControlMode("qAppsControlMode")
   * .build();
   * ```
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-qappsconfiguration.html)
   */
  public interface QAppsConfigurationProperty {
    /**
     * Status information about whether end users can create and use Amazon Q Apps in the web
     * experience.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-qappsconfiguration.html#cfn-qbusiness-application-qappsconfiguration-qappscontrolmode)
     */
    public fun qAppsControlMode(): String

    /**
     * A builder for [QAppsConfigurationProperty]
     */
    @CdkDslMarker
    public interface Builder {
      /**
       * @param qAppsControlMode Status information about whether end users can create and use
       * Amazon Q Apps in the web experience. 
       */
      public fun qAppsControlMode(qAppsControlMode: String)
    }

    private class BuilderImpl : Builder {
      private val cdkBuilder:
          software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty.Builder
          =
          software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty.builder()

      /**
       * @param qAppsControlMode Status information about whether end users can create and use
       * Amazon Q Apps in the web experience. 
       */
      override fun qAppsControlMode(qAppsControlMode: String) {
        cdkBuilder.qAppsControlMode(qAppsControlMode)
      }

      public fun build():
          software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty =
          cdkBuilder.build()
    }

    private class Wrapper(
      cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty,
    ) : CdkObject(cdkObject),
        QAppsConfigurationProperty {
      /**
       * Status information about whether end users can create and use Amazon Q Apps in the web
       * experience.
       *
       * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qbusiness-application-qappsconfiguration.html#cfn-qbusiness-application-qappsconfiguration-qappscontrolmode)
       */
      override fun qAppsControlMode(): String = unwrap(this).getQAppsControlMode()
    }

    public companion object {
      public operator fun invoke(block: Builder.() -> Unit = {}): QAppsConfigurationProperty {
        val builderImpl = BuilderImpl()
        return Wrapper(builderImpl.apply(block).build())
      }

      internal
          fun wrap(cdkObject: software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty):
          QAppsConfigurationProperty = CdkObjectWrappers.wrap(cdkObject) as?
          QAppsConfigurationProperty ?: Wrapper(cdkObject)

      internal fun unwrap(wrapped: QAppsConfigurationProperty):
          software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty =
          (wrapped as CdkObject).cdkObject as
          software.amazon.awscdk.services.qbusiness.CfnApplication.QAppsConfigurationProperty
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy