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

com.pulumi.googlenative.cloudidentity.v1.kotlin.GroupArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.googlenative.cloudidentity.v1.kotlin

import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.googlenative.cloudidentity.v1.GroupArgs.builder
import com.pulumi.googlenative.cloudidentity.v1.kotlin.inputs.DynamicGroupMetadataArgs
import com.pulumi.googlenative.cloudidentity.v1.kotlin.inputs.DynamicGroupMetadataArgsBuilder
import com.pulumi.googlenative.cloudidentity.v1.kotlin.inputs.EntityKeyArgs
import com.pulumi.googlenative.cloudidentity.v1.kotlin.inputs.EntityKeyArgsBuilder
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Creates a Group.
 * Auto-naming is currently not supported for this resource.
 * @property description An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.
 * @property displayName The display name of the `Group`.
 * @property dynamicGroupMetadata Optional. Dynamic group metadata like queries and status.
 * @property groupKey The `EntityKey` of the `Group`.
 * @property initialGroupConfig Optional. The initial configuration option for the `Group`.
 * @property labels One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.
 * @property parent Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with "C" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)
 */
public data class GroupArgs(
    public val description: Output? = null,
    public val displayName: Output? = null,
    public val dynamicGroupMetadata: Output? = null,
    public val groupKey: Output? = null,
    public val initialGroupConfig: Output? = null,
    public val labels: Output>? = null,
    public val parent: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.googlenative.cloudidentity.v1.GroupArgs =
        com.pulumi.googlenative.cloudidentity.v1.GroupArgs.builder()
            .description(description?.applyValue({ args0 -> args0 }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .dynamicGroupMetadata(
                dynamicGroupMetadata?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .groupKey(groupKey?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .initialGroupConfig(initialGroupConfig?.applyValue({ args0 -> args0 }))
            .labels(labels?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
            .parent(parent?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [GroupArgs].
 */
@PulumiTagMarker
public class GroupArgsBuilder internal constructor() {
    private var description: Output? = null

    private var displayName: Output? = null

    private var dynamicGroupMetadata: Output? = null

    private var groupKey: Output? = null

    private var initialGroupConfig: Output? = null

    private var labels: Output>? = null

    private var parent: Output? = null

    /**
     * @param value An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.
     */
    @JvmName("jmscxtwbiegsjxtp")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

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

    /**
     * @param value Optional. Dynamic group metadata like queries and status.
     */
    @JvmName("xmyotevxxrlctscx")
    public suspend fun dynamicGroupMetadata(`value`: Output) {
        this.dynamicGroupMetadata = value
    }

    /**
     * @param value The `EntityKey` of the `Group`.
     */
    @JvmName("kwvfktcblkycxbuu")
    public suspend fun groupKey(`value`: Output) {
        this.groupKey = value
    }

    /**
     * @param value Optional. The initial configuration option for the `Group`.
     */
    @JvmName("ellktfgtycubkawo")
    public suspend fun initialGroupConfig(`value`: Output) {
        this.initialGroupConfig = value
    }

    /**
     * @param value One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.
     */
    @JvmName("idvulehshfhxhwms")
    public suspend fun labels(`value`: Output>) {
        this.labels = value
    }

    /**
     * @param value Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with "C" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)
     */
    @JvmName("dvneiaglomswbxwp")
    public suspend fun parent(`value`: Output) {
        this.parent = value
    }

    /**
     * @param value An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.
     */
    @JvmName("ncejxdrbakdqwhtd")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

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

    /**
     * @param value Optional. Dynamic group metadata like queries and status.
     */
    @JvmName("ffwupjwwkvsuaogg")
    public suspend fun dynamicGroupMetadata(`value`: DynamicGroupMetadataArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dynamicGroupMetadata = mapped
    }

    /**
     * @param argument Optional. Dynamic group metadata like queries and status.
     */
    @JvmName("mknxoqqegcsfdmve")
    public suspend fun dynamicGroupMetadata(argument: suspend DynamicGroupMetadataArgsBuilder.() -> Unit) {
        val toBeMapped = DynamicGroupMetadataArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.dynamicGroupMetadata = mapped
    }

    /**
     * @param value The `EntityKey` of the `Group`.
     */
    @JvmName("qjawakhsxacaqbst")
    public suspend fun groupKey(`value`: EntityKeyArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.groupKey = mapped
    }

    /**
     * @param argument The `EntityKey` of the `Group`.
     */
    @JvmName("drfyskpyjdkiwvlh")
    public suspend fun groupKey(argument: suspend EntityKeyArgsBuilder.() -> Unit) {
        val toBeMapped = EntityKeyArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.groupKey = mapped
    }

    /**
     * @param value Optional. The initial configuration option for the `Group`.
     */
    @JvmName("ttekknwrltdkuqhf")
    public suspend fun initialGroupConfig(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.initialGroupConfig = mapped
    }

    /**
     * @param value One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.
     */
    @JvmName("dinyujbdwbbgasas")
    public suspend fun labels(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param values One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.
     */
    @JvmName("uutjgrbrkqyrwsnt")
    public fun labels(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.labels = mapped
    }

    /**
     * @param value Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with "C" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)
     */
    @JvmName("yvacoctmnxjcwygi")
    public suspend fun parent(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.parent = mapped
    }

    internal fun build(): GroupArgs = GroupArgs(
        description = description,
        displayName = displayName,
        dynamicGroupMetadata = dynamicGroupMetadata,
        groupKey = groupKey,
        initialGroupConfig = initialGroupConfig,
        labels = labels,
        parent = parent,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy