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

com.pulumi.awsnative.location.kotlin.TrackerArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.location.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.location.TrackerArgs.builder
import com.pulumi.awsnative.location.kotlin.enums.TrackerPositionFiltering
import com.pulumi.awsnative.location.kotlin.enums.TrackerPricingPlan
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

/**
 * Definition of AWS::Location::Tracker Resource Type
 * @property description An optional description for the tracker resource.
 * @property eventBridgeEnabled
 * @property kmsKeyEnableGeospatialQueries
 * @property kmsKeyId A key identifier for an [AWS KMS customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) . Enter a key ID, key ARN, alias name, or alias ARN.
 * @property positionFiltering Specifies the position filtering for the tracker resource.
 * Valid values:
 * - `TimeBased` - Location updates are evaluated against linked geofence collections, but not every location update is stored. If your update frequency is more often than 30 seconds, only one update per 30 seconds is stored for each unique device ID.
 * - `DistanceBased` - If the device has moved less than 30 m (98.4 ft), location updates are ignored. Location updates within this area are neither evaluated against linked geofence collections, nor stored. This helps control costs by reducing the number of geofence evaluations and historical device positions to paginate through. Distance-based filtering can also reduce the effects of GPS noise when displaying device trajectories on a map.
 * - `AccuracyBased` - If the device has moved less than the measured accuracy, location updates are ignored. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is ignored if the device has moved less than 15 m. Ignored location updates are neither evaluated against linked geofence collections, nor stored. This can reduce the effects of GPS noise when displaying device trajectories on a map, and can help control your costs by reducing the number of geofence evaluations.
 * This field is optional. If not specified, the default value is `TimeBased` .
 * @property pricingPlan
 * @property pricingPlanDataSource This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.
 * @property tags An array of key-value pairs to apply to this resource.
 * @property trackerName The name for the tracker resource.
 * Requirements:
 * - Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-), periods (.), and underscores (_).
 * - Must be a unique tracker resource name.
 * - No spaces allowed. For example, `ExampleTracker` .
 */
public data class TrackerArgs(
    public val description: Output? = null,
    public val eventBridgeEnabled: Output? = null,
    public val kmsKeyEnableGeospatialQueries: Output? = null,
    public val kmsKeyId: Output? = null,
    public val positionFiltering: Output? = null,
    public val pricingPlan: Output? = null,
    public val pricingPlanDataSource: Output? = null,
    public val tags: Output>? = null,
    public val trackerName: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.location.TrackerArgs =
        com.pulumi.awsnative.location.TrackerArgs.builder()
            .description(description?.applyValue({ args0 -> args0 }))
            .eventBridgeEnabled(eventBridgeEnabled?.applyValue({ args0 -> args0 }))
            .kmsKeyEnableGeospatialQueries(kmsKeyEnableGeospatialQueries?.applyValue({ args0 -> args0 }))
            .kmsKeyId(kmsKeyId?.applyValue({ args0 -> args0 }))
            .positionFiltering(positionFiltering?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .pricingPlan(pricingPlan?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .pricingPlanDataSource(pricingPlanDataSource?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .trackerName(trackerName?.applyValue({ args0 -> args0 })).build()
}

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

    private var eventBridgeEnabled: Output? = null

    private var kmsKeyEnableGeospatialQueries: Output? = null

    private var kmsKeyId: Output? = null

    private var positionFiltering: Output? = null

    private var pricingPlan: Output? = null

    private var pricingPlanDataSource: Output? = null

    private var tags: Output>? = null

    private var trackerName: Output? = null

    /**
     * @param value An optional description for the tracker resource.
     */
    @JvmName("hjnsqddqgxejihvn")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

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

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

    /**
     * @param value A key identifier for an [AWS KMS customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) . Enter a key ID, key ARN, alias name, or alias ARN.
     */
    @JvmName("hylnnqnywpbhlkvh")
    public suspend fun kmsKeyId(`value`: Output) {
        this.kmsKeyId = value
    }

    /**
     * @param value Specifies the position filtering for the tracker resource.
     * Valid values:
     * - `TimeBased` - Location updates are evaluated against linked geofence collections, but not every location update is stored. If your update frequency is more often than 30 seconds, only one update per 30 seconds is stored for each unique device ID.
     * - `DistanceBased` - If the device has moved less than 30 m (98.4 ft), location updates are ignored. Location updates within this area are neither evaluated against linked geofence collections, nor stored. This helps control costs by reducing the number of geofence evaluations and historical device positions to paginate through. Distance-based filtering can also reduce the effects of GPS noise when displaying device trajectories on a map.
     * - `AccuracyBased` - If the device has moved less than the measured accuracy, location updates are ignored. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is ignored if the device has moved less than 15 m. Ignored location updates are neither evaluated against linked geofence collections, nor stored. This can reduce the effects of GPS noise when displaying device trajectories on a map, and can help control your costs by reducing the number of geofence evaluations.
     * This field is optional. If not specified, the default value is `TimeBased` .
     */
    @JvmName("uguybqtscownnlkr")
    public suspend fun positionFiltering(`value`: Output) {
        this.positionFiltering = value
    }

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

    /**
     * @param value This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.
     */
    @JvmName("qjvwaihmftgegoxi")
    public suspend fun pricingPlanDataSource(`value`: Output) {
        this.pricingPlanDataSource = value
    }

    /**
     * @param value An array of key-value pairs to apply to this resource.
     */
    @JvmName("noaytsjbhitpxblf")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values An array of key-value pairs to apply to this resource.
     */
    @JvmName("fqgilhwbjoqmsqvh")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The name for the tracker resource.
     * Requirements:
     * - Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-), periods (.), and underscores (_).
     * - Must be a unique tracker resource name.
     * - No spaces allowed. For example, `ExampleTracker` .
     */
    @JvmName("bmrtpdbcwnngpnxb")
    public suspend fun trackerName(`value`: Output) {
        this.trackerName = value
    }

    /**
     * @param value An optional description for the tracker resource.
     */
    @JvmName("gqshxcotxestobrs")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

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

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

    /**
     * @param value A key identifier for an [AWS KMS customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) . Enter a key ID, key ARN, alias name, or alias ARN.
     */
    @JvmName("ylbkbxqdoejobppi")
    public suspend fun kmsKeyId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kmsKeyId = mapped
    }

    /**
     * @param value Specifies the position filtering for the tracker resource.
     * Valid values:
     * - `TimeBased` - Location updates are evaluated against linked geofence collections, but not every location update is stored. If your update frequency is more often than 30 seconds, only one update per 30 seconds is stored for each unique device ID.
     * - `DistanceBased` - If the device has moved less than 30 m (98.4 ft), location updates are ignored. Location updates within this area are neither evaluated against linked geofence collections, nor stored. This helps control costs by reducing the number of geofence evaluations and historical device positions to paginate through. Distance-based filtering can also reduce the effects of GPS noise when displaying device trajectories on a map.
     * - `AccuracyBased` - If the device has moved less than the measured accuracy, location updates are ignored. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is ignored if the device has moved less than 15 m. Ignored location updates are neither evaluated against linked geofence collections, nor stored. This can reduce the effects of GPS noise when displaying device trajectories on a map, and can help control your costs by reducing the number of geofence evaluations.
     * This field is optional. If not specified, the default value is `TimeBased` .
     */
    @JvmName("eidnhpmccoynaxpm")
    public suspend fun positionFiltering(`value`: TrackerPositionFiltering?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.positionFiltering = mapped
    }

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

    /**
     * @param value This shape is deprecated since 2022-02-01: Deprecated. No longer allowed.
     */
    @JvmName("ktwcxjtjrvbkyykw")
    public suspend fun pricingPlanDataSource(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.pricingPlanDataSource = mapped
    }

    /**
     * @param value An array of key-value pairs to apply to this resource.
     */
    @JvmName("qghjstlcgygbmqrb")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument An array of key-value pairs to apply to this resource.
     */
    @JvmName("lluwytejfndldqbj")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument An array of key-value pairs to apply to this resource.
     */
    @JvmName("hedqcsgrckjbrkaf")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument An array of key-value pairs to apply to this resource.
     */
    @JvmName("bixpsqtkqsjwbpae")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values An array of key-value pairs to apply to this resource.
     */
    @JvmName("mlfkktwltvgbykml")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The name for the tracker resource.
     * Requirements:
     * - Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-), periods (.), and underscores (_).
     * - Must be a unique tracker resource name.
     * - No spaces allowed. For example, `ExampleTracker` .
     */
    @JvmName("opkqxhiunsifamfs")
    public suspend fun trackerName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trackerName = mapped
    }

    internal fun build(): TrackerArgs = TrackerArgs(
        description = description,
        eventBridgeEnabled = eventBridgeEnabled,
        kmsKeyEnableGeospatialQueries = kmsKeyEnableGeospatialQueries,
        kmsKeyId = kmsKeyId,
        positionFiltering = positionFiltering,
        pricingPlan = pricingPlan,
        pricingPlanDataSource = pricingPlanDataSource,
        tags = tags,
        trackerName = trackerName,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy