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

com.pulumi.cloudflare.kotlin.ZeroTrustAccessApplicationArgs.kt Maven / Gradle / Ivy

Go to download

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

The newest version!
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.cloudflare.kotlin

import com.pulumi.cloudflare.ZeroTrustAccessApplicationArgs.builder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationCorsHeaderArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationCorsHeaderArgsBuilder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationFooterLinkArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationFooterLinkArgsBuilder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationLandingPageDesignArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationLandingPageDesignArgsBuilder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationSaasAppArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationSaasAppArgsBuilder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationScimConfigArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationScimConfigArgsBuilder
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationTargetCriteriaArgs
import com.pulumi.cloudflare.kotlin.inputs.ZeroTrustAccessApplicationTargetCriteriaArgsBuilder
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.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Provides a Cloudflare Access Application resource. Access
 * Applications are used to restrict access to a whole application using an
 * authorisation gateway managed by Cloudflare.
 * > It's required that an `account_id` or `zone_id` is provided and in
 *    most cases using either is fine. However, if you're using a scoped
 *    access token, you must provide the argument that matches the token's
 *    scope. For example, an access token that is scoped to the "example.com"
 *    zone needs to use the `zone_id` argument.
 * ## Import
 * ```sh
 * $ pulumi import cloudflare:index/zeroTrustAccessApplication:ZeroTrustAccessApplication example /
 * ```
 * @property accountId The account identifier to target for the resource. Conflicts with `zone_id`.
 * @property allowAuthenticateViaWarp When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication.
 * @property allowedIdps The identity providers selected for the application.
 * @property appLauncherLogoUrl The logo URL of the app launcher.
 * @property appLauncherVisible Option to show/hide applications in App Launcher. Defaults to `true`.
 * @property autoRedirectToIdentity Option to skip identity provider selection if only one is configured in `allowed_idps`. Defaults to `false`.
 * @property bgColor The background color of the app launcher.
 * @property corsHeaders CORS configuration for the Access Application. See below for reference structure.
 * @property customDenyMessage Option that returns a custom error message when a user is denied access to the application.
 * @property customDenyUrl Option that redirects to a custom URL when a user is denied access to the application via identity based rules.
 * @property customNonIdentityDenyUrl Option that redirects to a custom URL when a user is denied access to the application via non identity rules.
 * @property customPages The custom pages selected for the application.
 * @property domain The primary hostname and path that Access will secure. If the app is visible in the App Launcher dashboard, this is the domain that will be displayed.
 * @property enableBindingCookie Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`.
 * @property footerLinks The footer links of the app launcher.
 * @property headerBgColor The background color of the header bar in the app launcher.
 * @property httpOnlyCookieAttribute Option to add the `HttpOnly` cookie flag to access tokens.
 * @property landingPageDesign The landing page design of the app launcher.
 * @property logoUrl Image URL for the logo shown in the app launcher dashboard.
 * @property name Friendly name of the Access Application.
 * @property optionsPreflightBypass Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors_headers is set. Defaults to `false`.
 * @property policies The policies associated with the application, in ascending order of precedence. Warning: Do not use this field while you still have this application ID referenced as `application_id` in any `cloudflare.AccessPolicy` resource, as it can result in an inconsistent state.
 * @property saasApp SaaS configuration for the Access Application.
 * @property sameSiteCookieAttribute Defines the same-site cookie setting for access tokens. Available values: `none`, `lax`, `strict`.
 * @property scimConfig Configuration for provisioning to this application via SCIM. This is currently in closed beta.
 * @property selfHostedDomains List of domains that access will secure. Only present for self_hosted, vnc, and ssh applications. Always includes the value set as `domain`.
 * @property serviceAuth401Redirect Option to return a 401 status code in service authentication rules on failed requests. Defaults to `false`.
 * @property sessionDuration How often a user will be forced to re-authorise. Must be in the format `48h` or `2h45m`. Defaults to `24h`.
 * @property skipAppLauncherLoginPage Option to skip the App Launcher landing page. Defaults to `false`.
 * @property skipInterstitial Option to skip the authorization interstitial when using the CLI. Defaults to `false`.
 * @property tags The itags associated with the application.
 * @property targetCriterias A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
 * @property type The application type. Available values: `app_launcher`, `bookmark`, `biso`, `dash_sso`, `saas`, `self_hosted`, `ssh`, `vnc`, `warp`, `infrastructure`. Defaults to `self_hosted`.
 * @property zoneId The zone identifier to target for the resource. Conflicts with `account_id`.
 */
public data class ZeroTrustAccessApplicationArgs(
    public val accountId: Output? = null,
    public val allowAuthenticateViaWarp: Output? = null,
    public val allowedIdps: Output>? = null,
    public val appLauncherLogoUrl: Output? = null,
    public val appLauncherVisible: Output? = null,
    public val autoRedirectToIdentity: Output? = null,
    public val bgColor: Output? = null,
    public val corsHeaders: Output>? = null,
    public val customDenyMessage: Output? = null,
    public val customDenyUrl: Output? = null,
    public val customNonIdentityDenyUrl: Output? = null,
    public val customPages: Output>? = null,
    public val domain: Output? = null,
    public val enableBindingCookie: Output? = null,
    public val footerLinks: Output>? = null,
    public val headerBgColor: Output? = null,
    public val httpOnlyCookieAttribute: Output? = null,
    public val landingPageDesign: Output? = null,
    public val logoUrl: Output? = null,
    public val name: Output? = null,
    public val optionsPreflightBypass: Output? = null,
    public val policies: Output>? = null,
    public val saasApp: Output? = null,
    public val sameSiteCookieAttribute: Output? = null,
    public val scimConfig: Output? = null,
    public val selfHostedDomains: Output>? = null,
    public val serviceAuth401Redirect: Output? = null,
    public val sessionDuration: Output? = null,
    public val skipAppLauncherLoginPage: Output? = null,
    public val skipInterstitial: Output? = null,
    public val tags: Output>? = null,
    public val targetCriterias: Output>? = null,
    public val type: Output? = null,
    public val zoneId: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.cloudflare.ZeroTrustAccessApplicationArgs =
        com.pulumi.cloudflare.ZeroTrustAccessApplicationArgs.builder()
            .accountId(accountId?.applyValue({ args0 -> args0 }))
            .allowAuthenticateViaWarp(allowAuthenticateViaWarp?.applyValue({ args0 -> args0 }))
            .allowedIdps(allowedIdps?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .appLauncherLogoUrl(appLauncherLogoUrl?.applyValue({ args0 -> args0 }))
            .appLauncherVisible(appLauncherVisible?.applyValue({ args0 -> args0 }))
            .autoRedirectToIdentity(autoRedirectToIdentity?.applyValue({ args0 -> args0 }))
            .bgColor(bgColor?.applyValue({ args0 -> args0 }))
            .corsHeaders(
                corsHeaders?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .customDenyMessage(customDenyMessage?.applyValue({ args0 -> args0 }))
            .customDenyUrl(customDenyUrl?.applyValue({ args0 -> args0 }))
            .customNonIdentityDenyUrl(customNonIdentityDenyUrl?.applyValue({ args0 -> args0 }))
            .customPages(customPages?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .domain(domain?.applyValue({ args0 -> args0 }))
            .enableBindingCookie(enableBindingCookie?.applyValue({ args0 -> args0 }))
            .footerLinks(
                footerLinks?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .headerBgColor(headerBgColor?.applyValue({ args0 -> args0 }))
            .httpOnlyCookieAttribute(httpOnlyCookieAttribute?.applyValue({ args0 -> args0 }))
            .landingPageDesign(landingPageDesign?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .logoUrl(logoUrl?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .optionsPreflightBypass(optionsPreflightBypass?.applyValue({ args0 -> args0 }))
            .policies(policies?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .saasApp(saasApp?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .sameSiteCookieAttribute(sameSiteCookieAttribute?.applyValue({ args0 -> args0 }))
            .scimConfig(scimConfig?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .selfHostedDomains(selfHostedDomains?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .serviceAuth401Redirect(serviceAuth401Redirect?.applyValue({ args0 -> args0 }))
            .sessionDuration(sessionDuration?.applyValue({ args0 -> args0 }))
            .skipAppLauncherLoginPage(skipAppLauncherLoginPage?.applyValue({ args0 -> args0 }))
            .skipInterstitial(skipInterstitial?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .targetCriterias(
                targetCriterias?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .type(type?.applyValue({ args0 -> args0 }))
            .zoneId(zoneId?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ZeroTrustAccessApplicationArgs].
 */
@PulumiTagMarker
public class ZeroTrustAccessApplicationArgsBuilder internal constructor() {
    private var accountId: Output? = null

    private var allowAuthenticateViaWarp: Output? = null

    private var allowedIdps: Output>? = null

    private var appLauncherLogoUrl: Output? = null

    private var appLauncherVisible: Output? = null

    private var autoRedirectToIdentity: Output? = null

    private var bgColor: Output? = null

    private var corsHeaders: Output>? = null

    private var customDenyMessage: Output? = null

    private var customDenyUrl: Output? = null

    private var customNonIdentityDenyUrl: Output? = null

    private var customPages: Output>? = null

    private var domain: Output? = null

    private var enableBindingCookie: Output? = null

    private var footerLinks: Output>? = null

    private var headerBgColor: Output? = null

    private var httpOnlyCookieAttribute: Output? = null

    private var landingPageDesign: Output? = null

    private var logoUrl: Output? = null

    private var name: Output? = null

    private var optionsPreflightBypass: Output? = null

    private var policies: Output>? = null

    private var saasApp: Output? = null

    private var sameSiteCookieAttribute: Output? = null

    private var scimConfig: Output? = null

    private var selfHostedDomains: Output>? = null

    private var serviceAuth401Redirect: Output? = null

    private var sessionDuration: Output? = null

    private var skipAppLauncherLoginPage: Output? = null

    private var skipInterstitial: Output? = null

    private var tags: Output>? = null

    private var targetCriterias: Output>? = null

    private var type: Output? = null

    private var zoneId: Output? = null

    /**
     * @param value The account identifier to target for the resource. Conflicts with `zone_id`.
     */
    @JvmName("ddxlcvmtemuxcyfb")
    public suspend fun accountId(`value`: Output) {
        this.accountId = value
    }

    /**
     * @param value When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication.
     */
    @JvmName("mqnrvmefandafdkc")
    public suspend fun allowAuthenticateViaWarp(`value`: Output) {
        this.allowAuthenticateViaWarp = value
    }

    /**
     * @param value The identity providers selected for the application.
     */
    @JvmName("lgcwytehhjsxdjef")
    public suspend fun allowedIdps(`value`: Output>) {
        this.allowedIdps = value
    }

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

    /**
     * @param values The identity providers selected for the application.
     */
    @JvmName("edfvottsvypplrkb")
    public suspend fun allowedIdps(values: List>) {
        this.allowedIdps = Output.all(values)
    }

    /**
     * @param value The logo URL of the app launcher.
     */
    @JvmName("epuxelnmofqfovbn")
    public suspend fun appLauncherLogoUrl(`value`: Output) {
        this.appLauncherLogoUrl = value
    }

    /**
     * @param value Option to show/hide applications in App Launcher. Defaults to `true`.
     */
    @JvmName("skdmipxcailjibdn")
    public suspend fun appLauncherVisible(`value`: Output) {
        this.appLauncherVisible = value
    }

    /**
     * @param value Option to skip identity provider selection if only one is configured in `allowed_idps`. Defaults to `false`.
     */
    @JvmName("brmlcssvcqmsjvqb")
    public suspend fun autoRedirectToIdentity(`value`: Output) {
        this.autoRedirectToIdentity = value
    }

    /**
     * @param value The background color of the app launcher.
     */
    @JvmName("rybmkchmlnwtcpyc")
    public suspend fun bgColor(`value`: Output) {
        this.bgColor = value
    }

    /**
     * @param value CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("ufyxxxtnxxmhidvh")
    public suspend fun corsHeaders(`value`: Output>) {
        this.corsHeaders = value
    }

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

    /**
     * @param values CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("ujdokgjaghjjybap")
    public suspend fun corsHeaders(values: List>) {
        this.corsHeaders = Output.all(values)
    }

    /**
     * @param value Option that returns a custom error message when a user is denied access to the application.
     */
    @JvmName("fwwxuaplgkwwlews")
    public suspend fun customDenyMessage(`value`: Output) {
        this.customDenyMessage = value
    }

    /**
     * @param value Option that redirects to a custom URL when a user is denied access to the application via identity based rules.
     */
    @JvmName("bbiyhxstsncbuuef")
    public suspend fun customDenyUrl(`value`: Output) {
        this.customDenyUrl = value
    }

    /**
     * @param value Option that redirects to a custom URL when a user is denied access to the application via non identity rules.
     */
    @JvmName("argcyfyihrgwejmc")
    public suspend fun customNonIdentityDenyUrl(`value`: Output) {
        this.customNonIdentityDenyUrl = value
    }

    /**
     * @param value The custom pages selected for the application.
     */
    @JvmName("nrqremgmhpuqysll")
    public suspend fun customPages(`value`: Output>) {
        this.customPages = value
    }

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

    /**
     * @param values The custom pages selected for the application.
     */
    @JvmName("hiovuhnrtmbdmulv")
    public suspend fun customPages(values: List>) {
        this.customPages = Output.all(values)
    }

    /**
     * @param value The primary hostname and path that Access will secure. If the app is visible in the App Launcher dashboard, this is the domain that will be displayed.
     */
    @JvmName("pmhbtpnyybiyblbd")
    public suspend fun domain(`value`: Output) {
        this.domain = value
    }

    /**
     * @param value Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`.
     */
    @JvmName("tlldhwwolculxyrg")
    public suspend fun enableBindingCookie(`value`: Output) {
        this.enableBindingCookie = value
    }

    /**
     * @param value The footer links of the app launcher.
     */
    @JvmName("egmdkvclgpbnoauq")
    public suspend fun footerLinks(`value`: Output>) {
        this.footerLinks = value
    }

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

    /**
     * @param values The footer links of the app launcher.
     */
    @JvmName("jdfrcwcrtkmwhfro")
    public suspend fun footerLinks(values: List>) {
        this.footerLinks = Output.all(values)
    }

    /**
     * @param value The background color of the header bar in the app launcher.
     */
    @JvmName("defuveaprwxermat")
    public suspend fun headerBgColor(`value`: Output) {
        this.headerBgColor = value
    }

    /**
     * @param value Option to add the `HttpOnly` cookie flag to access tokens.
     */
    @JvmName("mumeqbrougogbqqv")
    public suspend fun httpOnlyCookieAttribute(`value`: Output) {
        this.httpOnlyCookieAttribute = value
    }

    /**
     * @param value The landing page design of the app launcher.
     */
    @JvmName("rvffdrdkndbshhjd")
    public suspend fun landingPageDesign(`value`: Output) {
        this.landingPageDesign = value
    }

    /**
     * @param value Image URL for the logo shown in the app launcher dashboard.
     */
    @JvmName("aoendmtuhtbnymvp")
    public suspend fun logoUrl(`value`: Output) {
        this.logoUrl = value
    }

    /**
     * @param value Friendly name of the Access Application.
     */
    @JvmName("mjydoofdyiqnvoly")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors_headers is set. Defaults to `false`.
     */
    @JvmName("tctndgabuhhwsanc")
    public suspend fun optionsPreflightBypass(`value`: Output) {
        this.optionsPreflightBypass = value
    }

    /**
     * @param value The policies associated with the application, in ascending order of precedence. Warning: Do not use this field while you still have this application ID referenced as `application_id` in any `cloudflare.AccessPolicy` resource, as it can result in an inconsistent state.
     */
    @JvmName("unhjhemaimlenaku")
    public suspend fun policies(`value`: Output>) {
        this.policies = value
    }

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

    /**
     * @param values The policies associated with the application, in ascending order of precedence. Warning: Do not use this field while you still have this application ID referenced as `application_id` in any `cloudflare.AccessPolicy` resource, as it can result in an inconsistent state.
     */
    @JvmName("lrrsdldkyfjsusnt")
    public suspend fun policies(values: List>) {
        this.policies = Output.all(values)
    }

    /**
     * @param value SaaS configuration for the Access Application.
     */
    @JvmName("mmtybcdxmdxeqixq")
    public suspend fun saasApp(`value`: Output) {
        this.saasApp = value
    }

    /**
     * @param value Defines the same-site cookie setting for access tokens. Available values: `none`, `lax`, `strict`.
     */
    @JvmName("tjnixklvbvnmsroh")
    public suspend fun sameSiteCookieAttribute(`value`: Output) {
        this.sameSiteCookieAttribute = value
    }

    /**
     * @param value Configuration for provisioning to this application via SCIM. This is currently in closed beta.
     */
    @JvmName("oyacvmhdjhfmotch")
    public suspend fun scimConfig(`value`: Output) {
        this.scimConfig = value
    }

    /**
     * @param value List of domains that access will secure. Only present for self_hosted, vnc, and ssh applications. Always includes the value set as `domain`.
     */
    @JvmName("luprjpcrivkcewgo")
    public suspend fun selfHostedDomains(`value`: Output>) {
        this.selfHostedDomains = value
    }

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

    /**
     * @param values List of domains that access will secure. Only present for self_hosted, vnc, and ssh applications. Always includes the value set as `domain`.
     */
    @JvmName("aetdhmjnngvpbqay")
    public suspend fun selfHostedDomains(values: List>) {
        this.selfHostedDomains = Output.all(values)
    }

    /**
     * @param value Option to return a 401 status code in service authentication rules on failed requests. Defaults to `false`.
     */
    @JvmName("pbwnmoigakkyfvgy")
    public suspend fun serviceAuth401Redirect(`value`: Output) {
        this.serviceAuth401Redirect = value
    }

    /**
     * @param value How often a user will be forced to re-authorise. Must be in the format `48h` or `2h45m`. Defaults to `24h`.
     */
    @JvmName("ubaspilonqeqdswa")
    public suspend fun sessionDuration(`value`: Output) {
        this.sessionDuration = value
    }

    /**
     * @param value Option to skip the App Launcher landing page. Defaults to `false`.
     */
    @JvmName("tdqagoboptvptabn")
    public suspend fun skipAppLauncherLoginPage(`value`: Output) {
        this.skipAppLauncherLoginPage = value
    }

    /**
     * @param value Option to skip the authorization interstitial when using the CLI. Defaults to `false`.
     */
    @JvmName("vuseuiqnkeveivcn")
    public suspend fun skipInterstitial(`value`: Output) {
        this.skipInterstitial = value
    }

    /**
     * @param value The itags associated with the application.
     */
    @JvmName("bomwqjleevicbdol")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The itags associated with the application.
     */
    @JvmName("frovetccqtsetbor")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("eaihyruunbwrtktg")
    public suspend fun targetCriterias(`value`: Output>) {
        this.targetCriterias = value
    }

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

    /**
     * @param values A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("dkmpqssukkyhsjnw")
    public suspend fun targetCriterias(values: List>) {
        this.targetCriterias = Output.all(values)
    }

    /**
     * @param value The application type. Available values: `app_launcher`, `bookmark`, `biso`, `dash_sso`, `saas`, `self_hosted`, `ssh`, `vnc`, `warp`, `infrastructure`. Defaults to `self_hosted`.
     */
    @JvmName("gskmwbaiamxeliyn")
    public suspend fun type(`value`: Output) {
        this.type = value
    }

    /**
     * @param value The zone identifier to target for the resource. Conflicts with `account_id`.
     */
    @JvmName("dbqvanopupootgmi")
    public suspend fun zoneId(`value`: Output) {
        this.zoneId = value
    }

    /**
     * @param value The account identifier to target for the resource. Conflicts with `zone_id`.
     */
    @JvmName("aurvgpovwobjnafv")
    public suspend fun accountId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accountId = mapped
    }

    /**
     * @param value When set to true, users can authenticate to this application using their WARP session. When set to false this application will always require direct IdP authentication. This setting always overrides the organization setting for WARP authentication.
     */
    @JvmName("ejgfagqcexdspwbf")
    public suspend fun allowAuthenticateViaWarp(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowAuthenticateViaWarp = mapped
    }

    /**
     * @param value The identity providers selected for the application.
     */
    @JvmName("pokflmhnmtkgywvo")
    public suspend fun allowedIdps(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.allowedIdps = mapped
    }

    /**
     * @param values The identity providers selected for the application.
     */
    @JvmName("ybtqlxthlvcpnchb")
    public suspend fun allowedIdps(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.allowedIdps = mapped
    }

    /**
     * @param value The logo URL of the app launcher.
     */
    @JvmName("uqstebigfrdjmpgl")
    public suspend fun appLauncherLogoUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.appLauncherLogoUrl = mapped
    }

    /**
     * @param value Option to show/hide applications in App Launcher. Defaults to `true`.
     */
    @JvmName("uyixayfjppiwrydf")
    public suspend fun appLauncherVisible(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.appLauncherVisible = mapped
    }

    /**
     * @param value Option to skip identity provider selection if only one is configured in `allowed_idps`. Defaults to `false`.
     */
    @JvmName("cffkrlelknepmomm")
    public suspend fun autoRedirectToIdentity(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.autoRedirectToIdentity = mapped
    }

    /**
     * @param value The background color of the app launcher.
     */
    @JvmName("exwklgavcqbybrys")
    public suspend fun bgColor(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.bgColor = mapped
    }

    /**
     * @param value CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("urhgojhwebwyqxaw")
    public suspend fun corsHeaders(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.corsHeaders = mapped
    }

    /**
     * @param argument CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("pvdalrcutmeacasb")
    public suspend fun corsHeaders(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationCorsHeaderArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.corsHeaders = mapped
    }

    /**
     * @param argument CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("kvrpoxubgaucdwth")
    public suspend fun corsHeaders(vararg argument: suspend ZeroTrustAccessApplicationCorsHeaderArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationCorsHeaderArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.corsHeaders = mapped
    }

    /**
     * @param argument CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("gfhvktlipvqihwks")
    public suspend fun corsHeaders(argument: suspend ZeroTrustAccessApplicationCorsHeaderArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ZeroTrustAccessApplicationCorsHeaderArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.corsHeaders = mapped
    }

    /**
     * @param values CORS configuration for the Access Application. See below for reference structure.
     */
    @JvmName("nfwpsqmluclasklj")
    public suspend fun corsHeaders(vararg values: ZeroTrustAccessApplicationCorsHeaderArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.corsHeaders = mapped
    }

    /**
     * @param value Option that returns a custom error message when a user is denied access to the application.
     */
    @JvmName("hmjujhoidosxjady")
    public suspend fun customDenyMessage(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customDenyMessage = mapped
    }

    /**
     * @param value Option that redirects to a custom URL when a user is denied access to the application via identity based rules.
     */
    @JvmName("vcowajaugpvobttg")
    public suspend fun customDenyUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customDenyUrl = mapped
    }

    /**
     * @param value Option that redirects to a custom URL when a user is denied access to the application via non identity rules.
     */
    @JvmName("behgufoajvdtclwc")
    public suspend fun customNonIdentityDenyUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customNonIdentityDenyUrl = mapped
    }

    /**
     * @param value The custom pages selected for the application.
     */
    @JvmName("qkrsgnbobphnlxxo")
    public suspend fun customPages(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customPages = mapped
    }

    /**
     * @param values The custom pages selected for the application.
     */
    @JvmName("ywgerpcldeqyiyit")
    public suspend fun customPages(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.customPages = mapped
    }

    /**
     * @param value The primary hostname and path that Access will secure. If the app is visible in the App Launcher dashboard, this is the domain that will be displayed.
     */
    @JvmName("flonuolmbvifppjn")
    public suspend fun domain(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.domain = mapped
    }

    /**
     * @param value Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`.
     */
    @JvmName("wedekesbclbixccc")
    public suspend fun enableBindingCookie(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.enableBindingCookie = mapped
    }

    /**
     * @param value The footer links of the app launcher.
     */
    @JvmName("kdnxbfolrimggqfg")
    public suspend fun footerLinks(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.footerLinks = mapped
    }

    /**
     * @param argument The footer links of the app launcher.
     */
    @JvmName("ghnnvcdpnkylwhby")
    public suspend fun footerLinks(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationFooterLinkArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.footerLinks = mapped
    }

    /**
     * @param argument The footer links of the app launcher.
     */
    @JvmName("itljxqjpwdqomchi")
    public suspend fun footerLinks(vararg argument: suspend ZeroTrustAccessApplicationFooterLinkArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationFooterLinkArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.footerLinks = mapped
    }

    /**
     * @param argument The footer links of the app launcher.
     */
    @JvmName("vjdaxfgjholixxhi")
    public suspend fun footerLinks(argument: suspend ZeroTrustAccessApplicationFooterLinkArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ZeroTrustAccessApplicationFooterLinkArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.footerLinks = mapped
    }

    /**
     * @param values The footer links of the app launcher.
     */
    @JvmName("bqtwvqxsjsmiowsu")
    public suspend fun footerLinks(vararg values: ZeroTrustAccessApplicationFooterLinkArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.footerLinks = mapped
    }

    /**
     * @param value The background color of the header bar in the app launcher.
     */
    @JvmName("crnhmwgmxidsxiyf")
    public suspend fun headerBgColor(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.headerBgColor = mapped
    }

    /**
     * @param value Option to add the `HttpOnly` cookie flag to access tokens.
     */
    @JvmName("vyanqeauuylkyjxs")
    public suspend fun httpOnlyCookieAttribute(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.httpOnlyCookieAttribute = mapped
    }

    /**
     * @param value The landing page design of the app launcher.
     */
    @JvmName("bxhcbctfwregbtvb")
    public suspend fun landingPageDesign(`value`: ZeroTrustAccessApplicationLandingPageDesignArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.landingPageDesign = mapped
    }

    /**
     * @param argument The landing page design of the app launcher.
     */
    @JvmName("sxxdxuowtpeirmhx")
    public suspend fun landingPageDesign(argument: suspend ZeroTrustAccessApplicationLandingPageDesignArgsBuilder.() -> Unit) {
        val toBeMapped = ZeroTrustAccessApplicationLandingPageDesignArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.landingPageDesign = mapped
    }

    /**
     * @param value Image URL for the logo shown in the app launcher dashboard.
     */
    @JvmName("rwfmdojqpcybvcer")
    public suspend fun logoUrl(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.logoUrl = mapped
    }

    /**
     * @param value Friendly name of the Access Application.
     */
    @JvmName("kcbibborxdxhklby")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Allows options preflight requests to bypass Access authentication and go directly to the origin. Cannot turn on if cors_headers is set. Defaults to `false`.
     */
    @JvmName("dhpblktnmgdcigld")
    public suspend fun optionsPreflightBypass(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.optionsPreflightBypass = mapped
    }

    /**
     * @param value The policies associated with the application, in ascending order of precedence. Warning: Do not use this field while you still have this application ID referenced as `application_id` in any `cloudflare.AccessPolicy` resource, as it can result in an inconsistent state.
     */
    @JvmName("lmsjfpmwcpfdsuwp")
    public suspend fun policies(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policies = mapped
    }

    /**
     * @param values The policies associated with the application, in ascending order of precedence. Warning: Do not use this field while you still have this application ID referenced as `application_id` in any `cloudflare.AccessPolicy` resource, as it can result in an inconsistent state.
     */
    @JvmName("nuojdasigytyhbaq")
    public suspend fun policies(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.policies = mapped
    }

    /**
     * @param value SaaS configuration for the Access Application.
     */
    @JvmName("mdmpnrbojunpydtd")
    public suspend fun saasApp(`value`: ZeroTrustAccessApplicationSaasAppArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.saasApp = mapped
    }

    /**
     * @param argument SaaS configuration for the Access Application.
     */
    @JvmName("lifbounvebcdilxy")
    public suspend fun saasApp(argument: suspend ZeroTrustAccessApplicationSaasAppArgsBuilder.() -> Unit) {
        val toBeMapped = ZeroTrustAccessApplicationSaasAppArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.saasApp = mapped
    }

    /**
     * @param value Defines the same-site cookie setting for access tokens. Available values: `none`, `lax`, `strict`.
     */
    @JvmName("fpvhyqetbortvtva")
    public suspend fun sameSiteCookieAttribute(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sameSiteCookieAttribute = mapped
    }

    /**
     * @param value Configuration for provisioning to this application via SCIM. This is currently in closed beta.
     */
    @JvmName("aqbjjnbasqegebgy")
    public suspend fun scimConfig(`value`: ZeroTrustAccessApplicationScimConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.scimConfig = mapped
    }

    /**
     * @param argument Configuration for provisioning to this application via SCIM. This is currently in closed beta.
     */
    @JvmName("foiirjfmtrdmermb")
    public suspend fun scimConfig(argument: suspend ZeroTrustAccessApplicationScimConfigArgsBuilder.() -> Unit) {
        val toBeMapped = ZeroTrustAccessApplicationScimConfigArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.scimConfig = mapped
    }

    /**
     * @param value List of domains that access will secure. Only present for self_hosted, vnc, and ssh applications. Always includes the value set as `domain`.
     */
    @JvmName("jxwsujqqrsredfvc")
    public suspend fun selfHostedDomains(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.selfHostedDomains = mapped
    }

    /**
     * @param values List of domains that access will secure. Only present for self_hosted, vnc, and ssh applications. Always includes the value set as `domain`.
     */
    @JvmName("nrylyedhtvbenvsp")
    public suspend fun selfHostedDomains(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.selfHostedDomains = mapped
    }

    /**
     * @param value Option to return a 401 status code in service authentication rules on failed requests. Defaults to `false`.
     */
    @JvmName("eiggsodsbtgljgqd")
    public suspend fun serviceAuth401Redirect(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.serviceAuth401Redirect = mapped
    }

    /**
     * @param value How often a user will be forced to re-authorise. Must be in the format `48h` or `2h45m`. Defaults to `24h`.
     */
    @JvmName("hbukoomjcjjrgmik")
    public suspend fun sessionDuration(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sessionDuration = mapped
    }

    /**
     * @param value Option to skip the App Launcher landing page. Defaults to `false`.
     */
    @JvmName("mxffioaxtbfvpjxj")
    public suspend fun skipAppLauncherLoginPage(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.skipAppLauncherLoginPage = mapped
    }

    /**
     * @param value Option to skip the authorization interstitial when using the CLI. Defaults to `false`.
     */
    @JvmName("sgvdjqnywknsttoq")
    public suspend fun skipInterstitial(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.skipInterstitial = mapped
    }

    /**
     * @param value The itags associated with the application.
     */
    @JvmName("udqrfufhioonrotf")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values The itags associated with the application.
     */
    @JvmName("vyrwfujrypnukexa")
    public suspend fun tags(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("xjrafldckvycrnpr")
    public suspend fun targetCriterias(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.targetCriterias = mapped
    }

    /**
     * @param argument A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("vpypwkkerworumlg")
    public suspend fun targetCriterias(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationTargetCriteriaArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.targetCriterias = mapped
    }

    /**
     * @param argument A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("fccrcqvbggqmiwbv")
    public suspend fun targetCriterias(vararg argument: suspend ZeroTrustAccessApplicationTargetCriteriaArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            ZeroTrustAccessApplicationTargetCriteriaArgsBuilder().applySuspend { it() }.build()
        }
        val mapped = of(toBeMapped)
        this.targetCriterias = mapped
    }

    /**
     * @param argument A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("bioqxpvurdabfcgj")
    public suspend fun targetCriterias(argument: suspend ZeroTrustAccessApplicationTargetCriteriaArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ZeroTrustAccessApplicationTargetCriteriaArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.targetCriterias = mapped
    }

    /**
     * @param values A list of mappings to apply to SCIM resources before provisioning them in this application. These can transform or filter the resources to be provisioned.
     */
    @JvmName("djgdendiuvxucbcm")
    public suspend fun targetCriterias(vararg values: ZeroTrustAccessApplicationTargetCriteriaArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.targetCriterias = mapped
    }

    /**
     * @param value The application type. Available values: `app_launcher`, `bookmark`, `biso`, `dash_sso`, `saas`, `self_hosted`, `ssh`, `vnc`, `warp`, `infrastructure`. Defaults to `self_hosted`.
     */
    @JvmName("hlioxhjjuhvovmgd")
    public suspend fun type(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.type = mapped
    }

    /**
     * @param value The zone identifier to target for the resource. Conflicts with `account_id`.
     */
    @JvmName("fkgicooknlwpqcof")
    public suspend fun zoneId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.zoneId = mapped
    }

    internal fun build(): ZeroTrustAccessApplicationArgs = ZeroTrustAccessApplicationArgs(
        accountId = accountId,
        allowAuthenticateViaWarp = allowAuthenticateViaWarp,
        allowedIdps = allowedIdps,
        appLauncherLogoUrl = appLauncherLogoUrl,
        appLauncherVisible = appLauncherVisible,
        autoRedirectToIdentity = autoRedirectToIdentity,
        bgColor = bgColor,
        corsHeaders = corsHeaders,
        customDenyMessage = customDenyMessage,
        customDenyUrl = customDenyUrl,
        customNonIdentityDenyUrl = customNonIdentityDenyUrl,
        customPages = customPages,
        domain = domain,
        enableBindingCookie = enableBindingCookie,
        footerLinks = footerLinks,
        headerBgColor = headerBgColor,
        httpOnlyCookieAttribute = httpOnlyCookieAttribute,
        landingPageDesign = landingPageDesign,
        logoUrl = logoUrl,
        name = name,
        optionsPreflightBypass = optionsPreflightBypass,
        policies = policies,
        saasApp = saasApp,
        sameSiteCookieAttribute = sameSiteCookieAttribute,
        scimConfig = scimConfig,
        selfHostedDomains = selfHostedDomains,
        serviceAuth401Redirect = serviceAuth401Redirect,
        sessionDuration = sessionDuration,
        skipAppLauncherLoginPage = skipAppLauncherLoginPage,
        skipInterstitial = skipInterstitial,
        tags = tags,
        targetCriterias = targetCriterias,
        type = type,
        zoneId = zoneId,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy