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

commonMain.aws.sdk.kotlin.services.nimble.model.Studio.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.nimble.model

import aws.smithy.kotlin.runtime.SdkDsl
import aws.smithy.kotlin.runtime.time.Instant

/**
 * Represents a studio resource.
 *
 * A studio is the core resource used with Nimble Studio. You must create a studio first, before any other resource type can be created. All other resources you create and manage in Nimble Studio are contained within a studio.
 *
 * When creating a studio, you must provides two IAM roles for use with the Nimble Studio portal. These roles are assumed by your users when they log in to the Nimble Studio portal via IAM Identity Center and your identity source.
 *
 * The user role must have the `AmazonNimbleStudio-StudioUser` managed policy attached for the portal to function properly.
 *
 * The admin role must have the `AmazonNimbleStudio-StudioAdmin` managed policy attached for the portal to function properly.
 *
 * Your studio roles must trust the `identity.nimble.amazonaws.com` service principal to function properly.
 */
public class Studio private constructor(builder: Builder) {
    /**
     * The IAM role that studio admins assume when logging in to the Nimble Studio portal.
     */
    public val adminRoleArn: kotlin.String? = builder.adminRoleArn
    /**
     * The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
     */
    public val arn: kotlin.String? = builder.arn
    /**
     * The ISO timestamp in seconds for when the resource was created.
     */
    public val createdAt: aws.smithy.kotlin.runtime.time.Instant? = builder.createdAt
    /**
     * A friendly name for the studio.
     */
    public val displayName: kotlin.String? = builder.displayName
    /**
     * The Amazon Web Services Region where the studio resource is located.
     */
    public val homeRegion: kotlin.String? = builder.homeRegion
    /**
     * The IAM Identity Center application client ID used to integrate with IAM Identity Center. This ID allows IAM Identity Center users to log in to Nimble Studio portal.
     */
    public val ssoClientId: kotlin.String? = builder.ssoClientId
    /**
     * The current state of the studio resource.
     */
    public val state: aws.sdk.kotlin.services.nimble.model.StudioState? = builder.state
    /**
     * Status codes that provide additional detail on the studio state.
     */
    public val statusCode: aws.sdk.kotlin.services.nimble.model.StudioStatusCode? = builder.statusCode
    /**
     * Additional detail on the studio state.
     */
    public val statusMessage: kotlin.String? = builder.statusMessage
    /**
     * Configuration of the encryption method that is used for the studio.
     */
    public val studioEncryptionConfiguration: aws.sdk.kotlin.services.nimble.model.StudioEncryptionConfiguration? = builder.studioEncryptionConfiguration
    /**
     * The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.
     */
    public val studioId: kotlin.String? = builder.studioId
    /**
     * The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.
     */
    public val studioName: kotlin.String? = builder.studioName
    /**
     * The address of the web page for the studio.
     */
    public val studioUrl: kotlin.String? = builder.studioUrl
    /**
     * A collection of labels, in the form of key-value pairs, that apply to this resource.
     */
    public val tags: Map? = builder.tags
    /**
     * The ISO timestamp in seconds for when the resource was updated.
     */
    public val updatedAt: aws.smithy.kotlin.runtime.time.Instant? = builder.updatedAt
    /**
     * The IAM role that studio users assume when logging in to the Nimble Studio portal.
     */
    public val userRoleArn: kotlin.String? = builder.userRoleArn

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.nimble.model.Studio = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("Studio(")
        append("adminRoleArn=$adminRoleArn,")
        append("arn=$arn,")
        append("createdAt=$createdAt,")
        append("displayName=*** Sensitive Data Redacted ***,")
        append("homeRegion=$homeRegion,")
        append("ssoClientId=$ssoClientId,")
        append("state=$state,")
        append("statusCode=$statusCode,")
        append("statusMessage=$statusMessage,")
        append("studioEncryptionConfiguration=$studioEncryptionConfiguration,")
        append("studioId=$studioId,")
        append("studioName=$studioName,")
        append("studioUrl=$studioUrl,")
        append("tags=$tags,")
        append("updatedAt=$updatedAt,")
        append("userRoleArn=$userRoleArn")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = adminRoleArn?.hashCode() ?: 0
        result = 31 * result + (arn?.hashCode() ?: 0)
        result = 31 * result + (createdAt?.hashCode() ?: 0)
        result = 31 * result + (displayName?.hashCode() ?: 0)
        result = 31 * result + (homeRegion?.hashCode() ?: 0)
        result = 31 * result + (ssoClientId?.hashCode() ?: 0)
        result = 31 * result + (state?.hashCode() ?: 0)
        result = 31 * result + (statusCode?.hashCode() ?: 0)
        result = 31 * result + (statusMessage?.hashCode() ?: 0)
        result = 31 * result + (studioEncryptionConfiguration?.hashCode() ?: 0)
        result = 31 * result + (studioId?.hashCode() ?: 0)
        result = 31 * result + (studioName?.hashCode() ?: 0)
        result = 31 * result + (studioUrl?.hashCode() ?: 0)
        result = 31 * result + (tags?.hashCode() ?: 0)
        result = 31 * result + (updatedAt?.hashCode() ?: 0)
        result = 31 * result + (userRoleArn?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as Studio

        if (adminRoleArn != other.adminRoleArn) return false
        if (arn != other.arn) return false
        if (createdAt != other.createdAt) return false
        if (displayName != other.displayName) return false
        if (homeRegion != other.homeRegion) return false
        if (ssoClientId != other.ssoClientId) return false
        if (state != other.state) return false
        if (statusCode != other.statusCode) return false
        if (statusMessage != other.statusMessage) return false
        if (studioEncryptionConfiguration != other.studioEncryptionConfiguration) return false
        if (studioId != other.studioId) return false
        if (studioName != other.studioName) return false
        if (studioUrl != other.studioUrl) return false
        if (tags != other.tags) return false
        if (updatedAt != other.updatedAt) return false
        if (userRoleArn != other.userRoleArn) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.nimble.model.Studio = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * The IAM role that studio admins assume when logging in to the Nimble Studio portal.
         */
        public var adminRoleArn: kotlin.String? = null
        /**
         * The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.
         */
        public var arn: kotlin.String? = null
        /**
         * The ISO timestamp in seconds for when the resource was created.
         */
        public var createdAt: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * A friendly name for the studio.
         */
        public var displayName: kotlin.String? = null
        /**
         * The Amazon Web Services Region where the studio resource is located.
         */
        public var homeRegion: kotlin.String? = null
        /**
         * The IAM Identity Center application client ID used to integrate with IAM Identity Center. This ID allows IAM Identity Center users to log in to Nimble Studio portal.
         */
        public var ssoClientId: kotlin.String? = null
        /**
         * The current state of the studio resource.
         */
        public var state: aws.sdk.kotlin.services.nimble.model.StudioState? = null
        /**
         * Status codes that provide additional detail on the studio state.
         */
        public var statusCode: aws.sdk.kotlin.services.nimble.model.StudioStatusCode? = null
        /**
         * Additional detail on the studio state.
         */
        public var statusMessage: kotlin.String? = null
        /**
         * Configuration of the encryption method that is used for the studio.
         */
        public var studioEncryptionConfiguration: aws.sdk.kotlin.services.nimble.model.StudioEncryptionConfiguration? = null
        /**
         * The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.
         */
        public var studioId: kotlin.String? = null
        /**
         * The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.
         */
        public var studioName: kotlin.String? = null
        /**
         * The address of the web page for the studio.
         */
        public var studioUrl: kotlin.String? = null
        /**
         * A collection of labels, in the form of key-value pairs, that apply to this resource.
         */
        public var tags: Map? = null
        /**
         * The ISO timestamp in seconds for when the resource was updated.
         */
        public var updatedAt: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * The IAM role that studio users assume when logging in to the Nimble Studio portal.
         */
        public var userRoleArn: kotlin.String? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.nimble.model.Studio) : this() {
            this.adminRoleArn = x.adminRoleArn
            this.arn = x.arn
            this.createdAt = x.createdAt
            this.displayName = x.displayName
            this.homeRegion = x.homeRegion
            this.ssoClientId = x.ssoClientId
            this.state = x.state
            this.statusCode = x.statusCode
            this.statusMessage = x.statusMessage
            this.studioEncryptionConfiguration = x.studioEncryptionConfiguration
            this.studioId = x.studioId
            this.studioName = x.studioName
            this.studioUrl = x.studioUrl
            this.tags = x.tags
            this.updatedAt = x.updatedAt
            this.userRoleArn = x.userRoleArn
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.nimble.model.Studio = Studio(this)

        /**
         * construct an [aws.sdk.kotlin.services.nimble.model.StudioEncryptionConfiguration] inside the given [block]
         */
        public fun studioEncryptionConfiguration(block: aws.sdk.kotlin.services.nimble.model.StudioEncryptionConfiguration.Builder.() -> kotlin.Unit) {
            this.studioEncryptionConfiguration = aws.sdk.kotlin.services.nimble.model.StudioEncryptionConfiguration.invoke(block)
        }

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy