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

com.pulumi.azurenative.authorization.kotlin.AccessReviewScheduleDefinitionByIdArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.azurenative.authorization.kotlin

import com.pulumi.azurenative.authorization.AccessReviewScheduleDefinitionByIdArgs.builder
import com.pulumi.azurenative.authorization.kotlin.enums.AccessReviewRecurrenceRangeType
import com.pulumi.azurenative.authorization.kotlin.enums.DefaultDecisionType
import com.pulumi.azurenative.authorization.kotlin.inputs.AccessReviewInstanceArgs
import com.pulumi.azurenative.authorization.kotlin.inputs.AccessReviewInstanceArgsBuilder
import com.pulumi.azurenative.authorization.kotlin.inputs.AccessReviewReviewerArgs
import com.pulumi.azurenative.authorization.kotlin.inputs.AccessReviewReviewerArgsBuilder
import com.pulumi.core.Either
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Access Review Schedule Definition.
 * Azure REST API version: 2021-12-01-preview. Prior API version in Azure Native 1.x: 2021-03-01-preview.
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:authorization:AccessReviewScheduleDefinitionById myresource1 /subscriptions/{subscriptionId}/providers/Microsoft.Authorization/accessReviewScheduleDefinitions/{scheduleDefinitionId}
 * ```
 * @property autoApplyDecisionsEnabled Flag to indicate whether auto-apply capability, to automatically change the target object access resource, is enabled. If not enabled, a user must, after the review completes, apply the access review.
 * @property backupReviewers This is the collection of backup reviewers.
 * @property defaultDecision This specifies the behavior for the autoReview feature when an access review completes.
 * @property defaultDecisionEnabled Flag to indicate whether reviewers are required to provide a justification when reviewing access.
 * @property descriptionForAdmins The description provided by the access review creator and visible to admins.
 * @property descriptionForReviewers The description provided by the access review creator to be shown to reviewers.
 * @property displayName The display name for the schedule definition.
 * @property endDate The DateTime when the review is scheduled to end. Required if type is endDate
 * @property excludeResourceId This is used to indicate the resource id(s) to exclude
 * @property excludeRoleDefinitionId This is used to indicate the role definition id(s) to exclude
 * @property expandNestedMemberships Flag to indicate whether to expand nested memberships or not.
 * @property inactiveDuration Duration users are inactive for. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
 * @property includeAccessBelowResource Flag to indicate whether to expand nested memberships or not.
 * @property includeInheritedAccess Flag to indicate whether to expand nested memberships or not.
 * @property instanceDurationInDays The duration in days for an instance.
 * @property instances This is the collection of instances returned when one does an expand on it.
 * @property interval The interval for recurrence. For a quarterly review, the interval is 3 for type : absoluteMonthly.
 * @property justificationRequiredOnApproval Flag to indicate whether the reviewer is required to pass justification when recording a decision.
 * @property mailNotificationsEnabled Flag to indicate whether sending mails to reviewers and the review creator is enabled.
 * @property numberOfOccurrences The number of times to repeat the access review. Required and must be positive if type is numbered.
 * @property recommendationLookBackDuration Recommendations for access reviews are calculated by looking back at 30 days of data(w.r.t the start date of the review) by default. However, in some scenarios, customers want to change how far back to look at and want to configure 60 days, 90 days, etc. instead. This setting allows customers to configure this duration. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
 * @property recommendationsEnabled Flag to indicate whether showing recommendations to reviewers is enabled.
 * @property reminderNotificationsEnabled Flag to indicate whether sending reminder emails to reviewers are enabled.
 * @property reviewers This is the collection of reviewers.
 * @property scheduleDefinitionId The id of the access review schedule definition.
 * @property startDate The DateTime when the review is scheduled to be start. This could be a date in the future. Required on create.
 * @property type The recurrence range type. The possible values are: endDate, noEnd, numbered.
 */
public data class AccessReviewScheduleDefinitionByIdArgs(
    public val autoApplyDecisionsEnabled: Output? = null,
    public val backupReviewers: Output>? = null,
    public val defaultDecision: Output>? = null,
    public val defaultDecisionEnabled: Output? = null,
    public val descriptionForAdmins: Output? = null,
    public val descriptionForReviewers: Output? = null,
    public val displayName: Output? = null,
    public val endDate: Output? = null,
    public val excludeResourceId: Output? = null,
    public val excludeRoleDefinitionId: Output? = null,
    public val expandNestedMemberships: Output? = null,
    public val inactiveDuration: Output? = null,
    public val includeAccessBelowResource: Output? = null,
    public val includeInheritedAccess: Output? = null,
    public val instanceDurationInDays: Output? = null,
    public val instances: Output>? = null,
    public val interval: Output? = null,
    public val justificationRequiredOnApproval: Output? = null,
    public val mailNotificationsEnabled: Output? = null,
    public val numberOfOccurrences: Output? = null,
    public val recommendationLookBackDuration: Output? = null,
    public val recommendationsEnabled: Output? = null,
    public val reminderNotificationsEnabled: Output? = null,
    public val reviewers: Output>? = null,
    public val scheduleDefinitionId: Output? = null,
    public val startDate: Output? = null,
    public val type: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azurenative.authorization.AccessReviewScheduleDefinitionByIdArgs = com.pulumi.azurenative.authorization.AccessReviewScheduleDefinitionByIdArgs.builder()
        .autoApplyDecisionsEnabled(autoApplyDecisionsEnabled?.applyValue({ args0 -> args0 }))
        .backupReviewers(
            backupReviewers?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        )
        .defaultDecision(
            defaultDecision?.applyValue({ args0 ->
                args0.transform({ args0 -> args0 }, { args0 ->
                    args0.let({ args0 -> args0.toJava() })
                })
            }),
        )
        .defaultDecisionEnabled(defaultDecisionEnabled?.applyValue({ args0 -> args0 }))
        .descriptionForAdmins(descriptionForAdmins?.applyValue({ args0 -> args0 }))
        .descriptionForReviewers(descriptionForReviewers?.applyValue({ args0 -> args0 }))
        .displayName(displayName?.applyValue({ args0 -> args0 }))
        .endDate(endDate?.applyValue({ args0 -> args0 }))
        .excludeResourceId(excludeResourceId?.applyValue({ args0 -> args0 }))
        .excludeRoleDefinitionId(excludeRoleDefinitionId?.applyValue({ args0 -> args0 }))
        .expandNestedMemberships(expandNestedMemberships?.applyValue({ args0 -> args0 }))
        .inactiveDuration(inactiveDuration?.applyValue({ args0 -> args0 }))
        .includeAccessBelowResource(includeAccessBelowResource?.applyValue({ args0 -> args0 }))
        .includeInheritedAccess(includeInheritedAccess?.applyValue({ args0 -> args0 }))
        .instanceDurationInDays(instanceDurationInDays?.applyValue({ args0 -> args0 }))
        .instances(
            instances?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        )
        .interval(interval?.applyValue({ args0 -> args0 }))
        .justificationRequiredOnApproval(justificationRequiredOnApproval?.applyValue({ args0 -> args0 }))
        .mailNotificationsEnabled(mailNotificationsEnabled?.applyValue({ args0 -> args0 }))
        .numberOfOccurrences(numberOfOccurrences?.applyValue({ args0 -> args0 }))
        .recommendationLookBackDuration(recommendationLookBackDuration?.applyValue({ args0 -> args0 }))
        .recommendationsEnabled(recommendationsEnabled?.applyValue({ args0 -> args0 }))
        .reminderNotificationsEnabled(reminderNotificationsEnabled?.applyValue({ args0 -> args0 }))
        .reviewers(
            reviewers?.applyValue({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        )
        .scheduleDefinitionId(scheduleDefinitionId?.applyValue({ args0 -> args0 }))
        .startDate(startDate?.applyValue({ args0 -> args0 }))
        .type(
            type?.applyValue({ args0 ->
                args0.transform({ args0 -> args0 }, { args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                })
            }),
        ).build()
}

/**
 * Builder for [AccessReviewScheduleDefinitionByIdArgs].
 */
@PulumiTagMarker
public class AccessReviewScheduleDefinitionByIdArgsBuilder internal constructor() {
    private var autoApplyDecisionsEnabled: Output? = null

    private var backupReviewers: Output>? = null

    private var defaultDecision: Output>? = null

    private var defaultDecisionEnabled: Output? = null

    private var descriptionForAdmins: Output? = null

    private var descriptionForReviewers: Output? = null

    private var displayName: Output? = null

    private var endDate: Output? = null

    private var excludeResourceId: Output? = null

    private var excludeRoleDefinitionId: Output? = null

    private var expandNestedMemberships: Output? = null

    private var inactiveDuration: Output? = null

    private var includeAccessBelowResource: Output? = null

    private var includeInheritedAccess: Output? = null

    private var instanceDurationInDays: Output? = null

    private var instances: Output>? = null

    private var interval: Output? = null

    private var justificationRequiredOnApproval: Output? = null

    private var mailNotificationsEnabled: Output? = null

    private var numberOfOccurrences: Output? = null

    private var recommendationLookBackDuration: Output? = null

    private var recommendationsEnabled: Output? = null

    private var reminderNotificationsEnabled: Output? = null

    private var reviewers: Output>? = null

    private var scheduleDefinitionId: Output? = null

    private var startDate: Output? = null

    private var type: Output>? = null

    /**
     * @param value Flag to indicate whether auto-apply capability, to automatically change the target object access resource, is enabled. If not enabled, a user must, after the review completes, apply the access review.
     */
    @JvmName("oqauiabyhxwowhxu")
    public suspend fun autoApplyDecisionsEnabled(`value`: Output) {
        this.autoApplyDecisionsEnabled = value
    }

    /**
     * @param value This is the collection of backup reviewers.
     */
    @JvmName("imtobagacijshthb")
    public suspend fun backupReviewers(`value`: Output>) {
        this.backupReviewers = value
    }

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

    /**
     * @param values This is the collection of backup reviewers.
     */
    @JvmName("jmfmtxpuwbmxnpap")
    public suspend fun backupReviewers(values: List>) {
        this.backupReviewers = Output.all(values)
    }

    /**
     * @param value This specifies the behavior for the autoReview feature when an access review completes.
     */
    @JvmName("qgoonnqwrhmcdaam")
    public suspend fun defaultDecision(`value`: Output>) {
        this.defaultDecision = value
    }

    /**
     * @param value Flag to indicate whether reviewers are required to provide a justification when reviewing access.
     */
    @JvmName("bkjphuklmfikomgy")
    public suspend fun defaultDecisionEnabled(`value`: Output) {
        this.defaultDecisionEnabled = value
    }

    /**
     * @param value The description provided by the access review creator and visible to admins.
     */
    @JvmName("rkteppkffvbrrssv")
    public suspend fun descriptionForAdmins(`value`: Output) {
        this.descriptionForAdmins = value
    }

    /**
     * @param value The description provided by the access review creator to be shown to reviewers.
     */
    @JvmName("xqdsakwfcncggadn")
    public suspend fun descriptionForReviewers(`value`: Output) {
        this.descriptionForReviewers = value
    }

    /**
     * @param value The display name for the schedule definition.
     */
    @JvmName("frtyskxedawelebb")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value The DateTime when the review is scheduled to end. Required if type is endDate
     */
    @JvmName("oxwqvmcjjyjcleiq")
    public suspend fun endDate(`value`: Output) {
        this.endDate = value
    }

    /**
     * @param value This is used to indicate the resource id(s) to exclude
     */
    @JvmName("dhfuslnewrbvgxqd")
    public suspend fun excludeResourceId(`value`: Output) {
        this.excludeResourceId = value
    }

    /**
     * @param value This is used to indicate the role definition id(s) to exclude
     */
    @JvmName("nypmsypaqkpoprcf")
    public suspend fun excludeRoleDefinitionId(`value`: Output) {
        this.excludeRoleDefinitionId = value
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("stqewbacsbotnylb")
    public suspend fun expandNestedMemberships(`value`: Output) {
        this.expandNestedMemberships = value
    }

    /**
     * @param value Duration users are inactive for. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
     */
    @JvmName("xmhwjqcutwxqbxss")
    public suspend fun inactiveDuration(`value`: Output) {
        this.inactiveDuration = value
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("ixgxfufoskqhvbpl")
    public suspend fun includeAccessBelowResource(`value`: Output) {
        this.includeAccessBelowResource = value
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("odeuugcbefhmhcle")
    public suspend fun includeInheritedAccess(`value`: Output) {
        this.includeInheritedAccess = value
    }

    /**
     * @param value The duration in days for an instance.
     */
    @JvmName("tfwahxwboyjufkti")
    public suspend fun instanceDurationInDays(`value`: Output) {
        this.instanceDurationInDays = value
    }

    /**
     * @param value This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("qpwocoywgyisyeea")
    public suspend fun instances(`value`: Output>) {
        this.instances = value
    }

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

    /**
     * @param values This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("cayueahjcokrwhrf")
    public suspend fun instances(values: List>) {
        this.instances = Output.all(values)
    }

    /**
     * @param value The interval for recurrence. For a quarterly review, the interval is 3 for type : absoluteMonthly.
     */
    @JvmName("dlnijrfjjusovgib")
    public suspend fun interval(`value`: Output) {
        this.interval = value
    }

    /**
     * @param value Flag to indicate whether the reviewer is required to pass justification when recording a decision.
     */
    @JvmName("cihqecgntkcpwlje")
    public suspend fun justificationRequiredOnApproval(`value`: Output) {
        this.justificationRequiredOnApproval = value
    }

    /**
     * @param value Flag to indicate whether sending mails to reviewers and the review creator is enabled.
     */
    @JvmName("ywhnmgmohflbajlr")
    public suspend fun mailNotificationsEnabled(`value`: Output) {
        this.mailNotificationsEnabled = value
    }

    /**
     * @param value The number of times to repeat the access review. Required and must be positive if type is numbered.
     */
    @JvmName("eyhlwcmmovthcldu")
    public suspend fun numberOfOccurrences(`value`: Output) {
        this.numberOfOccurrences = value
    }

    /**
     * @param value Recommendations for access reviews are calculated by looking back at 30 days of data(w.r.t the start date of the review) by default. However, in some scenarios, customers want to change how far back to look at and want to configure 60 days, 90 days, etc. instead. This setting allows customers to configure this duration. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
     */
    @JvmName("fkkbakyjnfaanpur")
    public suspend fun recommendationLookBackDuration(`value`: Output) {
        this.recommendationLookBackDuration = value
    }

    /**
     * @param value Flag to indicate whether showing recommendations to reviewers is enabled.
     */
    @JvmName("bfvsttxijdyusxnr")
    public suspend fun recommendationsEnabled(`value`: Output) {
        this.recommendationsEnabled = value
    }

    /**
     * @param value Flag to indicate whether sending reminder emails to reviewers are enabled.
     */
    @JvmName("hdtqvekryvmcenmj")
    public suspend fun reminderNotificationsEnabled(`value`: Output) {
        this.reminderNotificationsEnabled = value
    }

    /**
     * @param value This is the collection of reviewers.
     */
    @JvmName("chmduaocwukepvth")
    public suspend fun reviewers(`value`: Output>) {
        this.reviewers = value
    }

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

    /**
     * @param values This is the collection of reviewers.
     */
    @JvmName("ipkpdariypxghiad")
    public suspend fun reviewers(values: List>) {
        this.reviewers = Output.all(values)
    }

    /**
     * @param value The id of the access review schedule definition.
     */
    @JvmName("jkpuwmueovwhsqgs")
    public suspend fun scheduleDefinitionId(`value`: Output) {
        this.scheduleDefinitionId = value
    }

    /**
     * @param value The DateTime when the review is scheduled to be start. This could be a date in the future. Required on create.
     */
    @JvmName("uniucmdruyurmqxp")
    public suspend fun startDate(`value`: Output) {
        this.startDate = value
    }

    /**
     * @param value The recurrence range type. The possible values are: endDate, noEnd, numbered.
     */
    @JvmName("cnqlfwqtjqtwryxl")
    public suspend fun type(`value`: Output>) {
        this.type = value
    }

    /**
     * @param value Flag to indicate whether auto-apply capability, to automatically change the target object access resource, is enabled. If not enabled, a user must, after the review completes, apply the access review.
     */
    @JvmName("njgojqwqwifejhyx")
    public suspend fun autoApplyDecisionsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoApplyDecisionsEnabled = mapped
    }

    /**
     * @param value This is the collection of backup reviewers.
     */
    @JvmName("bcxdglhqgjxtdlwa")
    public suspend fun backupReviewers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.backupReviewers = mapped
    }

    /**
     * @param argument This is the collection of backup reviewers.
     */
    @JvmName("pjuvjxyrmptbsxer")
    public suspend fun backupReviewers(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AccessReviewReviewerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.backupReviewers = mapped
    }

    /**
     * @param argument This is the collection of backup reviewers.
     */
    @JvmName("vcquvielxjonvlfd")
    public suspend fun backupReviewers(vararg argument: suspend AccessReviewReviewerArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AccessReviewReviewerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.backupReviewers = mapped
    }

    /**
     * @param argument This is the collection of backup reviewers.
     */
    @JvmName("lxxtfmanoytobadh")
    public suspend fun backupReviewers(argument: suspend AccessReviewReviewerArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(AccessReviewReviewerArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.backupReviewers = mapped
    }

    /**
     * @param values This is the collection of backup reviewers.
     */
    @JvmName("oghliuepngkaswgu")
    public suspend fun backupReviewers(vararg values: AccessReviewReviewerArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.backupReviewers = mapped
    }

    /**
     * @param value This specifies the behavior for the autoReview feature when an access review completes.
     */
    @JvmName("tmxievskophkndet")
    public suspend fun defaultDecision(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultDecision = mapped
    }

    /**
     * @param value This specifies the behavior for the autoReview feature when an access review completes.
     */
    @JvmName("iqgiqlabplmnxsvp")
    public fun defaultDecision(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.defaultDecision = mapped
    }

    /**
     * @param value This specifies the behavior for the autoReview feature when an access review completes.
     */
    @JvmName("ylwpoiwrqbblfakf")
    public fun defaultDecision(`value`: DefaultDecisionType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.defaultDecision = mapped
    }

    /**
     * @param value Flag to indicate whether reviewers are required to provide a justification when reviewing access.
     */
    @JvmName("byprksafmrdyfitr")
    public suspend fun defaultDecisionEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.defaultDecisionEnabled = mapped
    }

    /**
     * @param value The description provided by the access review creator and visible to admins.
     */
    @JvmName("ylkbavvrjuahbrfl")
    public suspend fun descriptionForAdmins(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.descriptionForAdmins = mapped
    }

    /**
     * @param value The description provided by the access review creator to be shown to reviewers.
     */
    @JvmName("ivjmhvouhuiqhksy")
    public suspend fun descriptionForReviewers(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.descriptionForReviewers = mapped
    }

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

    /**
     * @param value The DateTime when the review is scheduled to end. Required if type is endDate
     */
    @JvmName("vavqfpnrtdmelsio")
    public suspend fun endDate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.endDate = mapped
    }

    /**
     * @param value This is used to indicate the resource id(s) to exclude
     */
    @JvmName("dalhlaryudvrpuna")
    public suspend fun excludeResourceId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.excludeResourceId = mapped
    }

    /**
     * @param value This is used to indicate the role definition id(s) to exclude
     */
    @JvmName("pivrpfxbtbwxduls")
    public suspend fun excludeRoleDefinitionId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.excludeRoleDefinitionId = mapped
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("uxnfwohivrlkdxmy")
    public suspend fun expandNestedMemberships(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.expandNestedMemberships = mapped
    }

    /**
     * @param value Duration users are inactive for. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
     */
    @JvmName("cdkqisgkngeuttvq")
    public suspend fun inactiveDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.inactiveDuration = mapped
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("menoanhfshyjwttd")
    public suspend fun includeAccessBelowResource(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.includeAccessBelowResource = mapped
    }

    /**
     * @param value Flag to indicate whether to expand nested memberships or not.
     */
    @JvmName("qctsqudvogoqcawa")
    public suspend fun includeInheritedAccess(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.includeInheritedAccess = mapped
    }

    /**
     * @param value The duration in days for an instance.
     */
    @JvmName("ajtydgjhglnunqfa")
    public suspend fun instanceDurationInDays(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceDurationInDays = mapped
    }

    /**
     * @param value This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("gwibtpqxasrhpysc")
    public suspend fun instances(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instances = mapped
    }

    /**
     * @param argument This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("oakorkmnpylhtwve")
    public suspend fun instances(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AccessReviewInstanceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.instances = mapped
    }

    /**
     * @param argument This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("xbpmbrjmbffoxitj")
    public suspend fun instances(vararg argument: suspend AccessReviewInstanceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AccessReviewInstanceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.instances = mapped
    }

    /**
     * @param argument This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("rdaljfhxnkxuopbb")
    public suspend fun instances(argument: suspend AccessReviewInstanceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(AccessReviewInstanceArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.instances = mapped
    }

    /**
     * @param values This is the collection of instances returned when one does an expand on it.
     */
    @JvmName("smvrnoeywafbhidy")
    public suspend fun instances(vararg values: AccessReviewInstanceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.instances = mapped
    }

    /**
     * @param value The interval for recurrence. For a quarterly review, the interval is 3 for type : absoluteMonthly.
     */
    @JvmName("cdunbdtwclfxdcpv")
    public suspend fun interval(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.interval = mapped
    }

    /**
     * @param value Flag to indicate whether the reviewer is required to pass justification when recording a decision.
     */
    @JvmName("kddcfyiilsbdgjye")
    public suspend fun justificationRequiredOnApproval(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.justificationRequiredOnApproval = mapped
    }

    /**
     * @param value Flag to indicate whether sending mails to reviewers and the review creator is enabled.
     */
    @JvmName("igkfswkkngsiraxa")
    public suspend fun mailNotificationsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mailNotificationsEnabled = mapped
    }

    /**
     * @param value The number of times to repeat the access review. Required and must be positive if type is numbered.
     */
    @JvmName("ldfibuxwsymsmcye")
    public suspend fun numberOfOccurrences(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.numberOfOccurrences = mapped
    }

    /**
     * @param value Recommendations for access reviews are calculated by looking back at 30 days of data(w.r.t the start date of the review) by default. However, in some scenarios, customers want to change how far back to look at and want to configure 60 days, 90 days, etc. instead. This setting allows customers to configure this duration. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))
     */
    @JvmName("lkoaaxjlrimcsygu")
    public suspend fun recommendationLookBackDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recommendationLookBackDuration = mapped
    }

    /**
     * @param value Flag to indicate whether showing recommendations to reviewers is enabled.
     */
    @JvmName("gkqemgorvmgdeelq")
    public suspend fun recommendationsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.recommendationsEnabled = mapped
    }

    /**
     * @param value Flag to indicate whether sending reminder emails to reviewers are enabled.
     */
    @JvmName("xitjfcaotrbjynhl")
    public suspend fun reminderNotificationsEnabled(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reminderNotificationsEnabled = mapped
    }

    /**
     * @param value This is the collection of reviewers.
     */
    @JvmName("laofcmycxqgckxbq")
    public suspend fun reviewers(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.reviewers = mapped
    }

    /**
     * @param argument This is the collection of reviewers.
     */
    @JvmName("slvbjmiqwynikhgt")
    public suspend fun reviewers(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            AccessReviewReviewerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.reviewers = mapped
    }

    /**
     * @param argument This is the collection of reviewers.
     */
    @JvmName("frlpmdwtxdcnijxk")
    public suspend fun reviewers(vararg argument: suspend AccessReviewReviewerArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            AccessReviewReviewerArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.reviewers = mapped
    }

    /**
     * @param argument This is the collection of reviewers.
     */
    @JvmName("ekbmhacouxerievv")
    public suspend fun reviewers(argument: suspend AccessReviewReviewerArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(AccessReviewReviewerArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.reviewers = mapped
    }

    /**
     * @param values This is the collection of reviewers.
     */
    @JvmName("gwlykldarcvaylgw")
    public suspend fun reviewers(vararg values: AccessReviewReviewerArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.reviewers = mapped
    }

    /**
     * @param value The id of the access review schedule definition.
     */
    @JvmName("diywnvpcfkgfgwms")
    public suspend fun scheduleDefinitionId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scheduleDefinitionId = mapped
    }

    /**
     * @param value The DateTime when the review is scheduled to be start. This could be a date in the future. Required on create.
     */
    @JvmName("lnklgybvcwcxxojs")
    public suspend fun startDate(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.startDate = mapped
    }

    /**
     * @param value The recurrence range type. The possible values are: endDate, noEnd, numbered.
     */
    @JvmName("rohivewqufddcyff")
    public suspend fun type(`value`: Either?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.type = mapped
    }

    /**
     * @param value The recurrence range type. The possible values are: endDate, noEnd, numbered.
     */
    @JvmName("fnibndjgrdxlfiav")
    public fun type(`value`: String) {
        val toBeMapped = Either.ofLeft(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.type = mapped
    }

    /**
     * @param value The recurrence range type. The possible values are: endDate, noEnd, numbered.
     */
    @JvmName("ryiosgiqrupjraul")
    public fun type(`value`: AccessReviewRecurrenceRangeType) {
        val toBeMapped = Either.ofRight(value)
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.type = mapped
    }

    internal fun build(): AccessReviewScheduleDefinitionByIdArgs =
        AccessReviewScheduleDefinitionByIdArgs(
            autoApplyDecisionsEnabled = autoApplyDecisionsEnabled,
            backupReviewers = backupReviewers,
            defaultDecision = defaultDecision,
            defaultDecisionEnabled = defaultDecisionEnabled,
            descriptionForAdmins = descriptionForAdmins,
            descriptionForReviewers = descriptionForReviewers,
            displayName = displayName,
            endDate = endDate,
            excludeResourceId = excludeResourceId,
            excludeRoleDefinitionId = excludeRoleDefinitionId,
            expandNestedMemberships = expandNestedMemberships,
            inactiveDuration = inactiveDuration,
            includeAccessBelowResource = includeAccessBelowResource,
            includeInheritedAccess = includeInheritedAccess,
            instanceDurationInDays = instanceDurationInDays,
            instances = instances,
            interval = interval,
            justificationRequiredOnApproval = justificationRequiredOnApproval,
            mailNotificationsEnabled = mailNotificationsEnabled,
            numberOfOccurrences = numberOfOccurrences,
            recommendationLookBackDuration = recommendationLookBackDuration,
            recommendationsEnabled = recommendationsEnabled,
            reminderNotificationsEnabled = reminderNotificationsEnabled,
            reviewers = reviewers,
            scheduleDefinitionId = scheduleDefinitionId,
            startDate = startDate,
            type = type,
        )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy