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

io.github.vigoo.zioaws.appflow.model.package.scala Maven / Gradle / Ivy

package io.github.vigoo.zioaws.appflow
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
package object model {
  object primitives {
    type ARN = String
    type AccessKeyId = String
    type AccessToken = String
    type AccountName = String
    type ApiKey = String
    type ApiSecretKey = String
    type ApiToken = String
    type ApplicationKey = String
    type AuthCode = String
    type BucketName = String
    type BucketPrefix = String
    type ClientCredentialsArn = String
    type ClientId = String
    type ClientSecret = String
    type ConnectorProfileArn = String
    type ConnectorProfileName = String
    type CreatedBy = String
    type DatabaseUrl = String
    type Date = Instant
    type DatetimeTypeFieldName = String
    type Description = String
    type DestinationField = String
    type EntitiesPath = String
    type ExecutionId = String
    type ExecutionMessage = String
    type FieldType = String
    type FlowArn = String
    type FlowDescription = String
    type FlowName = String
    type FlowStatusMessage = String
    type Group = String
    type Identifier = String
    type InstanceUrl = String
    type KMSArn = String
    type Key = String
    type Label = String
    type MaxResults = Int
    type MostRecentExecutionMessage = String
    type Name = String
    type NextToken = String
    type OAuthScope = String
    type Object = String
    type Password = String
    type PrivateLinkServiceName = String
    type Property = String
    type RedirectUri = String
    type RefreshToken = String
    type Region = String
    type RoleArn = String
    type ScheduleExpression = String
    type ScheduleOffset = Long
    type SecretKey = String
    type Stage = String
    type TagKey = String
    type TagValue = String
    type Timezone = String
    type UpdatedBy = String
    type UpsolverBucketName = String
    type Username = String
    type Value = String
    type Warehouse = String
  }
  case class AggregationConfig(aggregationType: scala.Option[AggregationType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.AggregationConfig = {
      import AggregationConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.AggregationConfig.builder().optionallyWith(aggregationType.map(value => value.unwrap))(_.aggregationType).build()
    }
    def asReadOnly: AggregationConfig.ReadOnly = AggregationConfig.wrap(buildAwsValue())
  }
  object AggregationConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.AggregationConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AggregationConfig = AggregationConfig(aggregationTypeValue.map(value => value))
      def aggregationTypeValue: scala.Option[AggregationType]
      def aggregationType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AggregationType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("aggregationType", aggregationTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.AggregationConfig) extends AggregationConfig.ReadOnly { override def aggregationTypeValue: scala.Option[AggregationType] = scala.Option(impl.aggregationType()).map(value => AggregationType.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.AggregationConfig): ReadOnly = new Wrapper(impl)
  }
  sealed trait AggregationType { def unwrap: software.amazon.awssdk.services.appflow.model.AggregationType }
  object AggregationType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.AggregationType): AggregationType = value match {
      case software.amazon.awssdk.services.appflow.model.AggregationType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.AggregationType.NONE => None
      case software.amazon.awssdk.services.appflow.model.AggregationType.SINGLE_FILE => SingleFile
    }
    final case object unknownToSdkVersion extends AggregationType { override def unwrap: software.amazon.awssdk.services.appflow.model.AggregationType = software.amazon.awssdk.services.appflow.model.AggregationType.UNKNOWN_TO_SDK_VERSION }
    final case object None extends AggregationType { override def unwrap: software.amazon.awssdk.services.appflow.model.AggregationType = software.amazon.awssdk.services.appflow.model.AggregationType.NONE }
    final case object SingleFile extends AggregationType { override def unwrap: software.amazon.awssdk.services.appflow.model.AggregationType = software.amazon.awssdk.services.appflow.model.AggregationType.SINGLE_FILE }
  }
  sealed trait AmplitudeConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator }
  object AmplitudeConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator): AmplitudeConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator.BETWEEN => BETWEEN
    }
    final case object unknownToSdkVersion extends AmplitudeConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator = software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object BETWEEN extends AmplitudeConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator = software.amazon.awssdk.services.appflow.model.AmplitudeConnectorOperator.BETWEEN }
  }
  case class AmplitudeConnectorProfileCredentials(apiKey: primitives.ApiKey, secretKey: primitives.SecretKey) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileCredentials = {
      import AmplitudeConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileCredentials.builder().apiKey(apiKey: java.lang.String).secretKey(secretKey: java.lang.String).build()
    }
    def asReadOnly: AmplitudeConnectorProfileCredentials.ReadOnly = AmplitudeConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object AmplitudeConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AmplitudeConnectorProfileCredentials = AmplitudeConnectorProfileCredentials(apiKeyValue, secretKeyValue)
      def apiKeyValue: primitives.ApiKey
      def secretKeyValue: primitives.SecretKey
      def apiKey: ZIO[Any, Nothing, primitives.ApiKey] = ZIO.succeed(apiKeyValue)
      def secretKey: ZIO[Any, Nothing, primitives.SecretKey] = ZIO.succeed(secretKeyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileCredentials) extends AmplitudeConnectorProfileCredentials.ReadOnly {
      override def apiKeyValue: primitives.ApiKey = impl.apiKey(): primitives.ApiKey
      override def secretKeyValue: primitives.SecretKey = impl.secretKey(): primitives.SecretKey
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class AmplitudeConnectorProfileProperties() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileProperties = {
      import AmplitudeConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileProperties.builder().build()
    }
    def asReadOnly: AmplitudeConnectorProfileProperties.ReadOnly = AmplitudeConnectorProfileProperties.wrap(buildAwsValue())
  }
  object AmplitudeConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: AmplitudeConnectorProfileProperties = AmplitudeConnectorProfileProperties() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileProperties) extends AmplitudeConnectorProfileProperties.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.AmplitudeConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class AmplitudeMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.AmplitudeMetadata = {
      import AmplitudeMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.AmplitudeMetadata.builder().build()
    }
    def asReadOnly: AmplitudeMetadata.ReadOnly = AmplitudeMetadata.wrap(buildAwsValue())
  }
  object AmplitudeMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.AmplitudeMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: AmplitudeMetadata = AmplitudeMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.AmplitudeMetadata) extends AmplitudeMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.AmplitudeMetadata): ReadOnly = new Wrapper(impl)
  }
  case class AmplitudeSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.AmplitudeSourceProperties = {
      import AmplitudeSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.AmplitudeSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: AmplitudeSourceProperties.ReadOnly = AmplitudeSourceProperties.wrap(buildAwsValue())
  }
  object AmplitudeSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.AmplitudeSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: AmplitudeSourceProperties = AmplitudeSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.AmplitudeSourceProperties) extends AmplitudeSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.AmplitudeSourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait ConnectionMode { def unwrap: software.amazon.awssdk.services.appflow.model.ConnectionMode }
  object ConnectionMode {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ConnectionMode): ConnectionMode = value match {
      case software.amazon.awssdk.services.appflow.model.ConnectionMode.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ConnectionMode.PUBLIC => Public
      case software.amazon.awssdk.services.appflow.model.ConnectionMode.PRIVATE => Private
    }
    final case object unknownToSdkVersion extends ConnectionMode { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectionMode = software.amazon.awssdk.services.appflow.model.ConnectionMode.UNKNOWN_TO_SDK_VERSION }
    final case object Public extends ConnectionMode { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectionMode = software.amazon.awssdk.services.appflow.model.ConnectionMode.PUBLIC }
    final case object Private extends ConnectionMode { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectionMode = software.amazon.awssdk.services.appflow.model.ConnectionMode.PRIVATE }
  }
  case class ConnectorConfiguration(canUseAsSource: scala.Option[Boolean] = None, canUseAsDestination: scala.Option[Boolean] = None, supportedDestinationConnectors: scala.Option[Iterable[ConnectorType]] = None, supportedSchedulingFrequencies: scala.Option[Iterable[ScheduleFrequencyType]] = None, isPrivateLinkEnabled: scala.Option[Boolean] = None, isPrivateLinkEndpointUrlRequired: scala.Option[Boolean] = None, supportedTriggerTypes: scala.Option[Iterable[TriggerType]] = None, connectorMetadata: scala.Option[ConnectorMetadata] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorConfiguration = {
      import ConnectorConfiguration.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorConfiguration.builder().optionallyWith(canUseAsSource.map(value => value: java.lang.Boolean))(_.canUseAsSource).optionallyWith(canUseAsDestination.map(value => value: java.lang.Boolean))(_.canUseAsDestination).optionallyWith(supportedDestinationConnectors.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.supportedDestinationConnectorsWithStrings).optionallyWith(supportedSchedulingFrequencies.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.supportedSchedulingFrequenciesWithStrings).optionallyWith(isPrivateLinkEnabled.map(value => value: java.lang.Boolean))(_.isPrivateLinkEnabled).optionallyWith(isPrivateLinkEndpointUrlRequired.map(value => value: java.lang.Boolean))(_.isPrivateLinkEndpointUrlRequired).optionallyWith(supportedTriggerTypes.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.supportedTriggerTypesWithStrings).optionallyWith(connectorMetadata.map(value => value.buildAwsValue()))(_.connectorMetadata).build()
    }
    def asReadOnly: ConnectorConfiguration.ReadOnly = ConnectorConfiguration.wrap(buildAwsValue())
  }
  object ConnectorConfiguration {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorConfiguration] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorConfiguration = ConnectorConfiguration(canUseAsSourceValue.map(value => value), canUseAsDestinationValue.map(value => value), supportedDestinationConnectorsValue.map(value => value), supportedSchedulingFrequenciesValue.map(value => value), isPrivateLinkEnabledValue.map(value => value), isPrivateLinkEndpointUrlRequiredValue.map(value => value), supportedTriggerTypesValue.map(value => value), connectorMetadataValue.map(value => value.editable))
      def canUseAsSourceValue: scala.Option[Boolean]
      def canUseAsDestinationValue: scala.Option[Boolean]
      def supportedDestinationConnectorsValue: scala.Option[List[ConnectorType]]
      def supportedSchedulingFrequenciesValue: scala.Option[List[ScheduleFrequencyType]]
      def isPrivateLinkEnabledValue: scala.Option[Boolean]
      def isPrivateLinkEndpointUrlRequiredValue: scala.Option[Boolean]
      def supportedTriggerTypesValue: scala.Option[List[TriggerType]]
      def connectorMetadataValue: scala.Option[ConnectorMetadata.ReadOnly]
      def canUseAsSource: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("canUseAsSource", canUseAsSourceValue)
      def canUseAsDestination: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("canUseAsDestination", canUseAsDestinationValue)
      def supportedDestinationConnectors: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConnectorType]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedDestinationConnectors", supportedDestinationConnectorsValue)
      def supportedSchedulingFrequencies: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ScheduleFrequencyType]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedSchedulingFrequencies", supportedSchedulingFrequenciesValue)
      def isPrivateLinkEnabled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isPrivateLinkEnabled", isPrivateLinkEnabledValue)
      def isPrivateLinkEndpointUrlRequired: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isPrivateLinkEndpointUrlRequired", isPrivateLinkEndpointUrlRequiredValue)
      def supportedTriggerTypes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[TriggerType]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedTriggerTypes", supportedTriggerTypesValue)
      def connectorMetadata: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorMetadata", connectorMetadataValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorConfiguration) extends ConnectorConfiguration.ReadOnly {
      override def canUseAsSourceValue: scala.Option[Boolean] = scala.Option(impl.canUseAsSource()).map(value => value: Boolean)
      override def canUseAsDestinationValue: scala.Option[Boolean] = scala.Option(impl.canUseAsDestination()).map(value => value: Boolean)
      override def supportedDestinationConnectorsValue: scala.Option[List[ConnectorType]] = scala.Option(impl.supportedDestinationConnectors()).map(value => value.asScala.map { item => 
        ConnectorType.wrap(item)
      }.toList)
      override def supportedSchedulingFrequenciesValue: scala.Option[List[ScheduleFrequencyType]] = scala.Option(impl.supportedSchedulingFrequencies()).map(value => value.asScala.map { item => 
        ScheduleFrequencyType.wrap(item)
      }.toList)
      override def isPrivateLinkEnabledValue: scala.Option[Boolean] = scala.Option(impl.isPrivateLinkEnabled()).map(value => value: Boolean)
      override def isPrivateLinkEndpointUrlRequiredValue: scala.Option[Boolean] = scala.Option(impl.isPrivateLinkEndpointUrlRequired()).map(value => value: Boolean)
      override def supportedTriggerTypesValue: scala.Option[List[TriggerType]] = scala.Option(impl.supportedTriggerTypes()).map(value => value.asScala.map { item => 
        TriggerType.wrap(item)
      }.toList)
      override def connectorMetadataValue: scala.Option[ConnectorMetadata.ReadOnly] = scala.Option(impl.connectorMetadata()).map(value => ConnectorMetadata.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorConfiguration): ReadOnly = new Wrapper(impl)
  }
  type ConnectorConfigurationsMap = Map[ConnectorType, ConnectorConfiguration]
  case class ConnectorEntity(name: primitives.Name, label: scala.Option[primitives.Label] = None, hasNestedEntities: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorEntity = {
      import ConnectorEntity.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorEntity.builder().name(name: java.lang.String).optionallyWith(label.map(value => value: java.lang.String))(_.label).optionallyWith(hasNestedEntities.map(value => value: java.lang.Boolean))(_.hasNestedEntities).build()
    }
    def asReadOnly: ConnectorEntity.ReadOnly = ConnectorEntity.wrap(buildAwsValue())
  }
  object ConnectorEntity {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorEntity] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorEntity = ConnectorEntity(nameValue, labelValue.map(value => value), hasNestedEntitiesValue.map(value => value))
      def nameValue: primitives.Name
      def labelValue: scala.Option[primitives.Label]
      def hasNestedEntitiesValue: scala.Option[Boolean]
      def name: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(nameValue)
      def label: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Label] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("label", labelValue)
      def hasNestedEntities: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("hasNestedEntities", hasNestedEntitiesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorEntity) extends ConnectorEntity.ReadOnly {
      override def nameValue: primitives.Name = impl.name(): primitives.Name
      override def labelValue: scala.Option[primitives.Label] = scala.Option(impl.label()).map(value => value: primitives.Label)
      override def hasNestedEntitiesValue: scala.Option[Boolean] = scala.Option(impl.hasNestedEntities()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorEntity): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorEntityField(identifier: primitives.Identifier, label: scala.Option[primitives.Label] = None, supportedFieldTypeDetails: scala.Option[SupportedFieldTypeDetails] = None, description: scala.Option[primitives.Description] = None, sourceProperties: scala.Option[SourceFieldProperties] = None, destinationProperties: scala.Option[DestinationFieldProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorEntityField = {
      import ConnectorEntityField.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorEntityField.builder().identifier(identifier: java.lang.String).optionallyWith(label.map(value => value: java.lang.String))(_.label).optionallyWith(supportedFieldTypeDetails.map(value => value.buildAwsValue()))(_.supportedFieldTypeDetails).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(sourceProperties.map(value => value.buildAwsValue()))(_.sourceProperties).optionallyWith(destinationProperties.map(value => value.buildAwsValue()))(_.destinationProperties).build()
    }
    def asReadOnly: ConnectorEntityField.ReadOnly = ConnectorEntityField.wrap(buildAwsValue())
  }
  object ConnectorEntityField {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorEntityField] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorEntityField = ConnectorEntityField(identifierValue, labelValue.map(value => value), supportedFieldTypeDetailsValue.map(value => value.editable), descriptionValue.map(value => value), sourcePropertiesValue.map(value => value.editable), destinationPropertiesValue.map(value => value.editable))
      def identifierValue: primitives.Identifier
      def labelValue: scala.Option[primitives.Label]
      def supportedFieldTypeDetailsValue: scala.Option[SupportedFieldTypeDetails.ReadOnly]
      def descriptionValue: scala.Option[primitives.Description]
      def sourcePropertiesValue: scala.Option[SourceFieldProperties.ReadOnly]
      def destinationPropertiesValue: scala.Option[DestinationFieldProperties.ReadOnly]
      def identifier: ZIO[Any, Nothing, primitives.Identifier] = ZIO.succeed(identifierValue)
      def label: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Label] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("label", labelValue)
      def supportedFieldTypeDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SupportedFieldTypeDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedFieldTypeDetails", supportedFieldTypeDetailsValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Description] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def sourceProperties: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SourceFieldProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceProperties", sourcePropertiesValue)
      def destinationProperties: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DestinationFieldProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationProperties", destinationPropertiesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorEntityField) extends ConnectorEntityField.ReadOnly {
      override def identifierValue: primitives.Identifier = impl.identifier(): primitives.Identifier
      override def labelValue: scala.Option[primitives.Label] = scala.Option(impl.label()).map(value => value: primitives.Label)
      override def supportedFieldTypeDetailsValue: scala.Option[SupportedFieldTypeDetails.ReadOnly] = scala.Option(impl.supportedFieldTypeDetails()).map(value => SupportedFieldTypeDetails.wrap(value))
      override def descriptionValue: scala.Option[primitives.Description] = scala.Option(impl.description()).map(value => value: primitives.Description)
      override def sourcePropertiesValue: scala.Option[SourceFieldProperties.ReadOnly] = scala.Option(impl.sourceProperties()).map(value => SourceFieldProperties.wrap(value))
      override def destinationPropertiesValue: scala.Option[DestinationFieldProperties.ReadOnly] = scala.Option(impl.destinationProperties()).map(value => DestinationFieldProperties.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorEntityField): ReadOnly = new Wrapper(impl)
  }
  type ConnectorEntityFieldList = List[ConnectorEntityField]
  type ConnectorEntityList = List[ConnectorEntity]
  type ConnectorEntityMap = Map[primitives.Group, Iterable[ConnectorEntity]]
  case class ConnectorMetadata(amplitude: scala.Option[AmplitudeMetadata] = None, datadog: scala.Option[DatadogMetadata] = None, dynatrace: scala.Option[DynatraceMetadata] = None, googleAnalytics: scala.Option[GoogleAnalyticsMetadata] = None, inforNexus: scala.Option[InforNexusMetadata] = None, marketo: scala.Option[MarketoMetadata] = None, redshift: scala.Option[RedshiftMetadata] = None, s3: scala.Option[S3Metadata] = None, salesforce: scala.Option[SalesforceMetadata] = None, serviceNow: scala.Option[ServiceNowMetadata] = None, singular: scala.Option[SingularMetadata] = None, slack: scala.Option[SlackMetadata] = None, snowflake: scala.Option[SnowflakeMetadata] = None, trendmicro: scala.Option[TrendmicroMetadata] = None, veeva: scala.Option[VeevaMetadata] = None, zendesk: scala.Option[ZendeskMetadata] = None, eventBridge: scala.Option[EventBridgeMetadata] = None, upsolver: scala.Option[UpsolverMetadata] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorMetadata = {
      import ConnectorMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorMetadata.builder().optionallyWith(amplitude.map(value => value.buildAwsValue()))(_.amplitude).optionallyWith(datadog.map(value => value.buildAwsValue()))(_.datadog).optionallyWith(dynatrace.map(value => value.buildAwsValue()))(_.dynatrace).optionallyWith(googleAnalytics.map(value => value.buildAwsValue()))(_.googleAnalytics).optionallyWith(inforNexus.map(value => value.buildAwsValue()))(_.inforNexus).optionallyWith(marketo.map(value => value.buildAwsValue()))(_.marketo).optionallyWith(redshift.map(value => value.buildAwsValue()))(_.redshift).optionallyWith(s3.map(value => value.buildAwsValue()))(_.s3).optionallyWith(salesforce.map(value => value.buildAwsValue()))(_.salesforce).optionallyWith(serviceNow.map(value => value.buildAwsValue()))(_.serviceNow).optionallyWith(singular.map(value => value.buildAwsValue()))(_.singular).optionallyWith(slack.map(value => value.buildAwsValue()))(_.slack).optionallyWith(snowflake.map(value => value.buildAwsValue()))(_.snowflake).optionallyWith(trendmicro.map(value => value.buildAwsValue()))(_.trendmicro).optionallyWith(veeva.map(value => value.buildAwsValue()))(_.veeva).optionallyWith(zendesk.map(value => value.buildAwsValue()))(_.zendesk).optionallyWith(eventBridge.map(value => value.buildAwsValue()))(_.eventBridge).optionallyWith(upsolver.map(value => value.buildAwsValue()))(_.upsolver).build()
    }
    def asReadOnly: ConnectorMetadata.ReadOnly = ConnectorMetadata.wrap(buildAwsValue())
  }
  object ConnectorMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorMetadata = ConnectorMetadata(amplitudeValue.map(value => value.editable), datadogValue.map(value => value.editable), dynatraceValue.map(value => value.editable), googleAnalyticsValue.map(value => value.editable), inforNexusValue.map(value => value.editable), marketoValue.map(value => value.editable), redshiftValue.map(value => value.editable), s3Value.map(value => value.editable), salesforceValue.map(value => value.editable), serviceNowValue.map(value => value.editable), singularValue.map(value => value.editable), slackValue.map(value => value.editable), snowflakeValue.map(value => value.editable), trendmicroValue.map(value => value.editable), veevaValue.map(value => value.editable), zendeskValue.map(value => value.editable), eventBridgeValue.map(value => value.editable), upsolverValue.map(value => value.editable))
      def amplitudeValue: scala.Option[AmplitudeMetadata.ReadOnly]
      def datadogValue: scala.Option[DatadogMetadata.ReadOnly]
      def dynatraceValue: scala.Option[DynatraceMetadata.ReadOnly]
      def googleAnalyticsValue: scala.Option[GoogleAnalyticsMetadata.ReadOnly]
      def inforNexusValue: scala.Option[InforNexusMetadata.ReadOnly]
      def marketoValue: scala.Option[MarketoMetadata.ReadOnly]
      def redshiftValue: scala.Option[RedshiftMetadata.ReadOnly]
      def s3Value: scala.Option[S3Metadata.ReadOnly]
      def salesforceValue: scala.Option[SalesforceMetadata.ReadOnly]
      def serviceNowValue: scala.Option[ServiceNowMetadata.ReadOnly]
      def singularValue: scala.Option[SingularMetadata.ReadOnly]
      def slackValue: scala.Option[SlackMetadata.ReadOnly]
      def snowflakeValue: scala.Option[SnowflakeMetadata.ReadOnly]
      def trendmicroValue: scala.Option[TrendmicroMetadata.ReadOnly]
      def veevaValue: scala.Option[VeevaMetadata.ReadOnly]
      def zendeskValue: scala.Option[ZendeskMetadata.ReadOnly]
      def eventBridgeValue: scala.Option[EventBridgeMetadata.ReadOnly]
      def upsolverValue: scala.Option[UpsolverMetadata.ReadOnly]
      def amplitude: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AmplitudeMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("amplitude", amplitudeValue)
      def datadog: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DatadogMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datadog", datadogValue)
      def dynatrace: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DynatraceMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynatrace", dynatraceValue)
      def googleAnalytics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GoogleAnalyticsMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("googleAnalytics", googleAnalyticsValue)
      def inforNexus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InforNexusMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inforNexus", inforNexusValue)
      def marketo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarketoMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("marketo", marketoValue)
      def redshift: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RedshiftMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("redshift", redshiftValue)
      def s3: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3Metadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3", s3Value)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def serviceNow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ServiceNowMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceNow", serviceNowValue)
      def singular: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SingularMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("singular", singularValue)
      def slack: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SlackMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("slack", slackValue)
      def snowflake: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SnowflakeMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snowflake", snowflakeValue)
      def trendmicro: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TrendmicroMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("trendmicro", trendmicroValue)
      def veeva: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, VeevaMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("veeva", veevaValue)
      def zendesk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ZendeskMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zendesk", zendeskValue)
      def eventBridge: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, EventBridgeMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventBridge", eventBridgeValue)
      def upsolver: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, UpsolverMetadata.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("upsolver", upsolverValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorMetadata) extends ConnectorMetadata.ReadOnly {
      override def amplitudeValue: scala.Option[AmplitudeMetadata.ReadOnly] = scala.Option(impl.amplitude()).map(value => AmplitudeMetadata.wrap(value))
      override def datadogValue: scala.Option[DatadogMetadata.ReadOnly] = scala.Option(impl.datadog()).map(value => DatadogMetadata.wrap(value))
      override def dynatraceValue: scala.Option[DynatraceMetadata.ReadOnly] = scala.Option(impl.dynatrace()).map(value => DynatraceMetadata.wrap(value))
      override def googleAnalyticsValue: scala.Option[GoogleAnalyticsMetadata.ReadOnly] = scala.Option(impl.googleAnalytics()).map(value => GoogleAnalyticsMetadata.wrap(value))
      override def inforNexusValue: scala.Option[InforNexusMetadata.ReadOnly] = scala.Option(impl.inforNexus()).map(value => InforNexusMetadata.wrap(value))
      override def marketoValue: scala.Option[MarketoMetadata.ReadOnly] = scala.Option(impl.marketo()).map(value => MarketoMetadata.wrap(value))
      override def redshiftValue: scala.Option[RedshiftMetadata.ReadOnly] = scala.Option(impl.redshift()).map(value => RedshiftMetadata.wrap(value))
      override def s3Value: scala.Option[S3Metadata.ReadOnly] = scala.Option(impl.s3()).map(value => S3Metadata.wrap(value))
      override def salesforceValue: scala.Option[SalesforceMetadata.ReadOnly] = scala.Option(impl.salesforce()).map(value => SalesforceMetadata.wrap(value))
      override def serviceNowValue: scala.Option[ServiceNowMetadata.ReadOnly] = scala.Option(impl.serviceNow()).map(value => ServiceNowMetadata.wrap(value))
      override def singularValue: scala.Option[SingularMetadata.ReadOnly] = scala.Option(impl.singular()).map(value => SingularMetadata.wrap(value))
      override def slackValue: scala.Option[SlackMetadata.ReadOnly] = scala.Option(impl.slack()).map(value => SlackMetadata.wrap(value))
      override def snowflakeValue: scala.Option[SnowflakeMetadata.ReadOnly] = scala.Option(impl.snowflake()).map(value => SnowflakeMetadata.wrap(value))
      override def trendmicroValue: scala.Option[TrendmicroMetadata.ReadOnly] = scala.Option(impl.trendmicro()).map(value => TrendmicroMetadata.wrap(value))
      override def veevaValue: scala.Option[VeevaMetadata.ReadOnly] = scala.Option(impl.veeva()).map(value => VeevaMetadata.wrap(value))
      override def zendeskValue: scala.Option[ZendeskMetadata.ReadOnly] = scala.Option(impl.zendesk()).map(value => ZendeskMetadata.wrap(value))
      override def eventBridgeValue: scala.Option[EventBridgeMetadata.ReadOnly] = scala.Option(impl.eventBridge()).map(value => EventBridgeMetadata.wrap(value))
      override def upsolverValue: scala.Option[UpsolverMetadata.ReadOnly] = scala.Option(impl.upsolver()).map(value => UpsolverMetadata.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorMetadata): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorOAuthRequest(authCode: scala.Option[primitives.AuthCode] = None, redirectUri: scala.Option[primitives.RedirectUri] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorOAuthRequest = {
      import ConnectorOAuthRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorOAuthRequest.builder().optionallyWith(authCode.map(value => value: java.lang.String))(_.authCode).optionallyWith(redirectUri.map(value => value: java.lang.String))(_.redirectUri).build()
    }
    def asReadOnly: ConnectorOAuthRequest.ReadOnly = ConnectorOAuthRequest.wrap(buildAwsValue())
  }
  object ConnectorOAuthRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorOAuthRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorOAuthRequest = ConnectorOAuthRequest(authCodeValue.map(value => value), redirectUriValue.map(value => value))
      def authCodeValue: scala.Option[primitives.AuthCode]
      def redirectUriValue: scala.Option[primitives.RedirectUri]
      def authCode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AuthCode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("authCode", authCodeValue)
      def redirectUri: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RedirectUri] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("redirectUri", redirectUriValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorOAuthRequest) extends ConnectorOAuthRequest.ReadOnly {
      override def authCodeValue: scala.Option[primitives.AuthCode] = scala.Option(impl.authCode()).map(value => value: primitives.AuthCode)
      override def redirectUriValue: scala.Option[primitives.RedirectUri] = scala.Option(impl.redirectUri()).map(value => value: primitives.RedirectUri)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorOAuthRequest): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorOperator(amplitude: scala.Option[AmplitudeConnectorOperator] = None, datadog: scala.Option[DatadogConnectorOperator] = None, dynatrace: scala.Option[DynatraceConnectorOperator] = None, googleAnalytics: scala.Option[GoogleAnalyticsConnectorOperator] = None, inforNexus: scala.Option[InforNexusConnectorOperator] = None, marketo: scala.Option[MarketoConnectorOperator] = None, s3: scala.Option[S3ConnectorOperator] = None, salesforce: scala.Option[SalesforceConnectorOperator] = None, serviceNow: scala.Option[ServiceNowConnectorOperator] = None, singular: scala.Option[SingularConnectorOperator] = None, slack: scala.Option[SlackConnectorOperator] = None, trendmicro: scala.Option[TrendmicroConnectorOperator] = None, veeva: scala.Option[VeevaConnectorOperator] = None, zendesk: scala.Option[ZendeskConnectorOperator] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorOperator = {
      import ConnectorOperator.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorOperator.builder().optionallyWith(amplitude.map(value => value.unwrap))(_.amplitude).optionallyWith(datadog.map(value => value.unwrap))(_.datadog).optionallyWith(dynatrace.map(value => value.unwrap))(_.dynatrace).optionallyWith(googleAnalytics.map(value => value.unwrap))(_.googleAnalytics).optionallyWith(inforNexus.map(value => value.unwrap))(_.inforNexus).optionallyWith(marketo.map(value => value.unwrap))(_.marketo).optionallyWith(s3.map(value => value.unwrap))(_.s3).optionallyWith(salesforce.map(value => value.unwrap))(_.salesforce).optionallyWith(serviceNow.map(value => value.unwrap))(_.serviceNow).optionallyWith(singular.map(value => value.unwrap))(_.singular).optionallyWith(slack.map(value => value.unwrap))(_.slack).optionallyWith(trendmicro.map(value => value.unwrap))(_.trendmicro).optionallyWith(veeva.map(value => value.unwrap))(_.veeva).optionallyWith(zendesk.map(value => value.unwrap))(_.zendesk).build()
    }
    def asReadOnly: ConnectorOperator.ReadOnly = ConnectorOperator.wrap(buildAwsValue())
  }
  object ConnectorOperator {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorOperator] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorOperator = ConnectorOperator(amplitudeValue.map(value => value), datadogValue.map(value => value), dynatraceValue.map(value => value), googleAnalyticsValue.map(value => value), inforNexusValue.map(value => value), marketoValue.map(value => value), s3Value.map(value => value), salesforceValue.map(value => value), serviceNowValue.map(value => value), singularValue.map(value => value), slackValue.map(value => value), trendmicroValue.map(value => value), veevaValue.map(value => value), zendeskValue.map(value => value))
      def amplitudeValue: scala.Option[AmplitudeConnectorOperator]
      def datadogValue: scala.Option[DatadogConnectorOperator]
      def dynatraceValue: scala.Option[DynatraceConnectorOperator]
      def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorOperator]
      def inforNexusValue: scala.Option[InforNexusConnectorOperator]
      def marketoValue: scala.Option[MarketoConnectorOperator]
      def s3Value: scala.Option[S3ConnectorOperator]
      def salesforceValue: scala.Option[SalesforceConnectorOperator]
      def serviceNowValue: scala.Option[ServiceNowConnectorOperator]
      def singularValue: scala.Option[SingularConnectorOperator]
      def slackValue: scala.Option[SlackConnectorOperator]
      def trendmicroValue: scala.Option[TrendmicroConnectorOperator]
      def veevaValue: scala.Option[VeevaConnectorOperator]
      def zendeskValue: scala.Option[ZendeskConnectorOperator]
      def amplitude: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AmplitudeConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("amplitude", amplitudeValue)
      def datadog: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DatadogConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datadog", datadogValue)
      def dynatrace: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DynatraceConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynatrace", dynatraceValue)
      def googleAnalytics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GoogleAnalyticsConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("googleAnalytics", googleAnalyticsValue)
      def inforNexus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InforNexusConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inforNexus", inforNexusValue)
      def marketo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarketoConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("marketo", marketoValue)
      def s3: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3ConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3", s3Value)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def serviceNow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ServiceNowConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceNow", serviceNowValue)
      def singular: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SingularConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("singular", singularValue)
      def slack: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SlackConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("slack", slackValue)
      def trendmicro: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TrendmicroConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("trendmicro", trendmicroValue)
      def veeva: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, VeevaConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("veeva", veevaValue)
      def zendesk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ZendeskConnectorOperator] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zendesk", zendeskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorOperator) extends ConnectorOperator.ReadOnly {
      override def amplitudeValue: scala.Option[AmplitudeConnectorOperator] = scala.Option(impl.amplitude()).map(value => AmplitudeConnectorOperator.wrap(value))
      override def datadogValue: scala.Option[DatadogConnectorOperator] = scala.Option(impl.datadog()).map(value => DatadogConnectorOperator.wrap(value))
      override def dynatraceValue: scala.Option[DynatraceConnectorOperator] = scala.Option(impl.dynatrace()).map(value => DynatraceConnectorOperator.wrap(value))
      override def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorOperator] = scala.Option(impl.googleAnalytics()).map(value => GoogleAnalyticsConnectorOperator.wrap(value))
      override def inforNexusValue: scala.Option[InforNexusConnectorOperator] = scala.Option(impl.inforNexus()).map(value => InforNexusConnectorOperator.wrap(value))
      override def marketoValue: scala.Option[MarketoConnectorOperator] = scala.Option(impl.marketo()).map(value => MarketoConnectorOperator.wrap(value))
      override def s3Value: scala.Option[S3ConnectorOperator] = scala.Option(impl.s3()).map(value => S3ConnectorOperator.wrap(value))
      override def salesforceValue: scala.Option[SalesforceConnectorOperator] = scala.Option(impl.salesforce()).map(value => SalesforceConnectorOperator.wrap(value))
      override def serviceNowValue: scala.Option[ServiceNowConnectorOperator] = scala.Option(impl.serviceNow()).map(value => ServiceNowConnectorOperator.wrap(value))
      override def singularValue: scala.Option[SingularConnectorOperator] = scala.Option(impl.singular()).map(value => SingularConnectorOperator.wrap(value))
      override def slackValue: scala.Option[SlackConnectorOperator] = scala.Option(impl.slack()).map(value => SlackConnectorOperator.wrap(value))
      override def trendmicroValue: scala.Option[TrendmicroConnectorOperator] = scala.Option(impl.trendmicro()).map(value => TrendmicroConnectorOperator.wrap(value))
      override def veevaValue: scala.Option[VeevaConnectorOperator] = scala.Option(impl.veeva()).map(value => VeevaConnectorOperator.wrap(value))
      override def zendeskValue: scala.Option[ZendeskConnectorOperator] = scala.Option(impl.zendesk()).map(value => ZendeskConnectorOperator.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorOperator): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorProfile(connectorProfileArn: scala.Option[primitives.ConnectorProfileArn] = None, connectorProfileName: scala.Option[primitives.ConnectorProfileName] = None, connectorType: scala.Option[ConnectorType] = None, connectionMode: scala.Option[ConnectionMode] = None, credentialsArn: scala.Option[primitives.ARN] = None, connectorProfileProperties: scala.Option[ConnectorProfileProperties] = None, createdAt: scala.Option[primitives.Date] = None, lastUpdatedAt: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorProfile = {
      import ConnectorProfile.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorProfile.builder().optionallyWith(connectorProfileArn.map(value => value: java.lang.String))(_.connectorProfileArn).optionallyWith(connectorProfileName.map(value => value: java.lang.String))(_.connectorProfileName).optionallyWith(connectorType.map(value => value.unwrap))(_.connectorType).optionallyWith(connectionMode.map(value => value.unwrap))(_.connectionMode).optionallyWith(credentialsArn.map(value => value: java.lang.String))(_.credentialsArn).optionallyWith(connectorProfileProperties.map(value => value.buildAwsValue()))(_.connectorProfileProperties).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(lastUpdatedAt.map(value => value: java.time.Instant))(_.lastUpdatedAt).build()
    }
    def asReadOnly: ConnectorProfile.ReadOnly = ConnectorProfile.wrap(buildAwsValue())
  }
  object ConnectorProfile {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorProfile] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorProfile = ConnectorProfile(connectorProfileArnValue.map(value => value), connectorProfileNameValue.map(value => value), connectorTypeValue.map(value => value), connectionModeValue.map(value => value), credentialsArnValue.map(value => value), connectorProfilePropertiesValue.map(value => value.editable), createdAtValue.map(value => value), lastUpdatedAtValue.map(value => value))
      def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn]
      def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName]
      def connectorTypeValue: scala.Option[ConnectorType]
      def connectionModeValue: scala.Option[ConnectionMode]
      def credentialsArnValue: scala.Option[primitives.ARN]
      def connectorProfilePropertiesValue: scala.Option[ConnectorProfileProperties.ReadOnly]
      def createdAtValue: scala.Option[primitives.Date]
      def lastUpdatedAtValue: scala.Option[primitives.Date]
      def connectorProfileArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileArn", connectorProfileArnValue)
      def connectorProfileName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileName", connectorProfileNameValue)
      def connectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorType", connectorTypeValue)
      def connectionMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectionMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectionMode", connectionModeValue)
      def credentialsArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ARN] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("credentialsArn", credentialsArnValue)
      def connectorProfileProperties: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileProperties", connectorProfilePropertiesValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def lastUpdatedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedAt", lastUpdatedAtValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfile) extends ConnectorProfile.ReadOnly {
      override def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn] = scala.Option(impl.connectorProfileArn()).map(value => value: primitives.ConnectorProfileArn)
      override def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName] = scala.Option(impl.connectorProfileName()).map(value => value: primitives.ConnectorProfileName)
      override def connectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.connectorType()).map(value => ConnectorType.wrap(value))
      override def connectionModeValue: scala.Option[ConnectionMode] = scala.Option(impl.connectionMode()).map(value => ConnectionMode.wrap(value))
      override def credentialsArnValue: scala.Option[primitives.ARN] = scala.Option(impl.credentialsArn()).map(value => value: primitives.ARN)
      override def connectorProfilePropertiesValue: scala.Option[ConnectorProfileProperties.ReadOnly] = scala.Option(impl.connectorProfileProperties()).map(value => ConnectorProfileProperties.wrap(value))
      override def createdAtValue: scala.Option[primitives.Date] = scala.Option(impl.createdAt()).map(value => value: primitives.Date)
      override def lastUpdatedAtValue: scala.Option[primitives.Date] = scala.Option(impl.lastUpdatedAt()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfile): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorProfileConfig(connectorProfileProperties: ConnectorProfileProperties, connectorProfileCredentials: ConnectorProfileCredentials) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorProfileConfig = {
      import ConnectorProfileConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorProfileConfig.builder().connectorProfileProperties(connectorProfileProperties.buildAwsValue()).connectorProfileCredentials(connectorProfileCredentials.buildAwsValue()).build()
    }
    def asReadOnly: ConnectorProfileConfig.ReadOnly = ConnectorProfileConfig.wrap(buildAwsValue())
  }
  object ConnectorProfileConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorProfileConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorProfileConfig = ConnectorProfileConfig(connectorProfilePropertiesValue.editable, connectorProfileCredentialsValue.editable)
      def connectorProfilePropertiesValue: ConnectorProfileProperties.ReadOnly
      def connectorProfileCredentialsValue: ConnectorProfileCredentials.ReadOnly
      def connectorProfileProperties: ZIO[Any, Nothing, ConnectorProfileProperties.ReadOnly] = ZIO.succeed(connectorProfilePropertiesValue)
      def connectorProfileCredentials: ZIO[Any, Nothing, ConnectorProfileCredentials.ReadOnly] = ZIO.succeed(connectorProfileCredentialsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileConfig) extends ConnectorProfileConfig.ReadOnly {
      override def connectorProfilePropertiesValue: ConnectorProfileProperties.ReadOnly = ConnectorProfileProperties.wrap(impl.connectorProfileProperties())
      override def connectorProfileCredentialsValue: ConnectorProfileCredentials.ReadOnly = ConnectorProfileCredentials.wrap(impl.connectorProfileCredentials())
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileConfig): ReadOnly = new Wrapper(impl)
  }
  case class ConnectorProfileCredentials(amplitude: scala.Option[AmplitudeConnectorProfileCredentials] = None, datadog: scala.Option[DatadogConnectorProfileCredentials] = None, dynatrace: scala.Option[DynatraceConnectorProfileCredentials] = None, googleAnalytics: scala.Option[GoogleAnalyticsConnectorProfileCredentials] = None, inforNexus: scala.Option[InforNexusConnectorProfileCredentials] = None, marketo: scala.Option[MarketoConnectorProfileCredentials] = None, redshift: scala.Option[RedshiftConnectorProfileCredentials] = None, salesforce: scala.Option[SalesforceConnectorProfileCredentials] = None, serviceNow: scala.Option[ServiceNowConnectorProfileCredentials] = None, singular: scala.Option[SingularConnectorProfileCredentials] = None, slack: scala.Option[SlackConnectorProfileCredentials] = None, snowflake: scala.Option[SnowflakeConnectorProfileCredentials] = None, trendmicro: scala.Option[TrendmicroConnectorProfileCredentials] = None, veeva: scala.Option[VeevaConnectorProfileCredentials] = None, zendesk: scala.Option[ZendeskConnectorProfileCredentials] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorProfileCredentials = {
      import ConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorProfileCredentials.builder().optionallyWith(amplitude.map(value => value.buildAwsValue()))(_.amplitude).optionallyWith(datadog.map(value => value.buildAwsValue()))(_.datadog).optionallyWith(dynatrace.map(value => value.buildAwsValue()))(_.dynatrace).optionallyWith(googleAnalytics.map(value => value.buildAwsValue()))(_.googleAnalytics).optionallyWith(inforNexus.map(value => value.buildAwsValue()))(_.inforNexus).optionallyWith(marketo.map(value => value.buildAwsValue()))(_.marketo).optionallyWith(redshift.map(value => value.buildAwsValue()))(_.redshift).optionallyWith(salesforce.map(value => value.buildAwsValue()))(_.salesforce).optionallyWith(serviceNow.map(value => value.buildAwsValue()))(_.serviceNow).optionallyWith(singular.map(value => value.buildAwsValue()))(_.singular).optionallyWith(slack.map(value => value.buildAwsValue()))(_.slack).optionallyWith(snowflake.map(value => value.buildAwsValue()))(_.snowflake).optionallyWith(trendmicro.map(value => value.buildAwsValue()))(_.trendmicro).optionallyWith(veeva.map(value => value.buildAwsValue()))(_.veeva).optionallyWith(zendesk.map(value => value.buildAwsValue()))(_.zendesk).build()
    }
    def asReadOnly: ConnectorProfileCredentials.ReadOnly = ConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object ConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorProfileCredentials = ConnectorProfileCredentials(amplitudeValue.map(value => value.editable), datadogValue.map(value => value.editable), dynatraceValue.map(value => value.editable), googleAnalyticsValue.map(value => value.editable), inforNexusValue.map(value => value.editable), marketoValue.map(value => value.editable), redshiftValue.map(value => value.editable), salesforceValue.map(value => value.editable), serviceNowValue.map(value => value.editable), singularValue.map(value => value.editable), slackValue.map(value => value.editable), snowflakeValue.map(value => value.editable), trendmicroValue.map(value => value.editable), veevaValue.map(value => value.editable), zendeskValue.map(value => value.editable))
      def amplitudeValue: scala.Option[AmplitudeConnectorProfileCredentials.ReadOnly]
      def datadogValue: scala.Option[DatadogConnectorProfileCredentials.ReadOnly]
      def dynatraceValue: scala.Option[DynatraceConnectorProfileCredentials.ReadOnly]
      def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorProfileCredentials.ReadOnly]
      def inforNexusValue: scala.Option[InforNexusConnectorProfileCredentials.ReadOnly]
      def marketoValue: scala.Option[MarketoConnectorProfileCredentials.ReadOnly]
      def redshiftValue: scala.Option[RedshiftConnectorProfileCredentials.ReadOnly]
      def salesforceValue: scala.Option[SalesforceConnectorProfileCredentials.ReadOnly]
      def serviceNowValue: scala.Option[ServiceNowConnectorProfileCredentials.ReadOnly]
      def singularValue: scala.Option[SingularConnectorProfileCredentials.ReadOnly]
      def slackValue: scala.Option[SlackConnectorProfileCredentials.ReadOnly]
      def snowflakeValue: scala.Option[SnowflakeConnectorProfileCredentials.ReadOnly]
      def trendmicroValue: scala.Option[TrendmicroConnectorProfileCredentials.ReadOnly]
      def veevaValue: scala.Option[VeevaConnectorProfileCredentials.ReadOnly]
      def zendeskValue: scala.Option[ZendeskConnectorProfileCredentials.ReadOnly]
      def amplitude: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AmplitudeConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("amplitude", amplitudeValue)
      def datadog: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DatadogConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datadog", datadogValue)
      def dynatrace: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DynatraceConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynatrace", dynatraceValue)
      def googleAnalytics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GoogleAnalyticsConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("googleAnalytics", googleAnalyticsValue)
      def inforNexus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InforNexusConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inforNexus", inforNexusValue)
      def marketo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarketoConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("marketo", marketoValue)
      def redshift: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RedshiftConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("redshift", redshiftValue)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def serviceNow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ServiceNowConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceNow", serviceNowValue)
      def singular: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SingularConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("singular", singularValue)
      def slack: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SlackConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("slack", slackValue)
      def snowflake: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SnowflakeConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snowflake", snowflakeValue)
      def trendmicro: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TrendmicroConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("trendmicro", trendmicroValue)
      def veeva: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, VeevaConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("veeva", veevaValue)
      def zendesk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ZendeskConnectorProfileCredentials.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zendesk", zendeskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileCredentials) extends ConnectorProfileCredentials.ReadOnly {
      override def amplitudeValue: scala.Option[AmplitudeConnectorProfileCredentials.ReadOnly] = scala.Option(impl.amplitude()).map(value => AmplitudeConnectorProfileCredentials.wrap(value))
      override def datadogValue: scala.Option[DatadogConnectorProfileCredentials.ReadOnly] = scala.Option(impl.datadog()).map(value => DatadogConnectorProfileCredentials.wrap(value))
      override def dynatraceValue: scala.Option[DynatraceConnectorProfileCredentials.ReadOnly] = scala.Option(impl.dynatrace()).map(value => DynatraceConnectorProfileCredentials.wrap(value))
      override def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorProfileCredentials.ReadOnly] = scala.Option(impl.googleAnalytics()).map(value => GoogleAnalyticsConnectorProfileCredentials.wrap(value))
      override def inforNexusValue: scala.Option[InforNexusConnectorProfileCredentials.ReadOnly] = scala.Option(impl.inforNexus()).map(value => InforNexusConnectorProfileCredentials.wrap(value))
      override def marketoValue: scala.Option[MarketoConnectorProfileCredentials.ReadOnly] = scala.Option(impl.marketo()).map(value => MarketoConnectorProfileCredentials.wrap(value))
      override def redshiftValue: scala.Option[RedshiftConnectorProfileCredentials.ReadOnly] = scala.Option(impl.redshift()).map(value => RedshiftConnectorProfileCredentials.wrap(value))
      override def salesforceValue: scala.Option[SalesforceConnectorProfileCredentials.ReadOnly] = scala.Option(impl.salesforce()).map(value => SalesforceConnectorProfileCredentials.wrap(value))
      override def serviceNowValue: scala.Option[ServiceNowConnectorProfileCredentials.ReadOnly] = scala.Option(impl.serviceNow()).map(value => ServiceNowConnectorProfileCredentials.wrap(value))
      override def singularValue: scala.Option[SingularConnectorProfileCredentials.ReadOnly] = scala.Option(impl.singular()).map(value => SingularConnectorProfileCredentials.wrap(value))
      override def slackValue: scala.Option[SlackConnectorProfileCredentials.ReadOnly] = scala.Option(impl.slack()).map(value => SlackConnectorProfileCredentials.wrap(value))
      override def snowflakeValue: scala.Option[SnowflakeConnectorProfileCredentials.ReadOnly] = scala.Option(impl.snowflake()).map(value => SnowflakeConnectorProfileCredentials.wrap(value))
      override def trendmicroValue: scala.Option[TrendmicroConnectorProfileCredentials.ReadOnly] = scala.Option(impl.trendmicro()).map(value => TrendmicroConnectorProfileCredentials.wrap(value))
      override def veevaValue: scala.Option[VeevaConnectorProfileCredentials.ReadOnly] = scala.Option(impl.veeva()).map(value => VeevaConnectorProfileCredentials.wrap(value))
      override def zendeskValue: scala.Option[ZendeskConnectorProfileCredentials.ReadOnly] = scala.Option(impl.zendesk()).map(value => ZendeskConnectorProfileCredentials.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  type ConnectorProfileDetailList = List[ConnectorProfile]
  type ConnectorProfileNameList = List[primitives.ConnectorProfileName]
  case class ConnectorProfileProperties(amplitude: scala.Option[AmplitudeConnectorProfileProperties] = None, datadog: scala.Option[DatadogConnectorProfileProperties] = None, dynatrace: scala.Option[DynatraceConnectorProfileProperties] = None, googleAnalytics: scala.Option[GoogleAnalyticsConnectorProfileProperties] = None, inforNexus: scala.Option[InforNexusConnectorProfileProperties] = None, marketo: scala.Option[MarketoConnectorProfileProperties] = None, redshift: scala.Option[RedshiftConnectorProfileProperties] = None, salesforce: scala.Option[SalesforceConnectorProfileProperties] = None, serviceNow: scala.Option[ServiceNowConnectorProfileProperties] = None, singular: scala.Option[SingularConnectorProfileProperties] = None, slack: scala.Option[SlackConnectorProfileProperties] = None, snowflake: scala.Option[SnowflakeConnectorProfileProperties] = None, trendmicro: scala.Option[TrendmicroConnectorProfileProperties] = None, veeva: scala.Option[VeevaConnectorProfileProperties] = None, zendesk: scala.Option[ZendeskConnectorProfileProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ConnectorProfileProperties = {
      import ConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ConnectorProfileProperties.builder().optionallyWith(amplitude.map(value => value.buildAwsValue()))(_.amplitude).optionallyWith(datadog.map(value => value.buildAwsValue()))(_.datadog).optionallyWith(dynatrace.map(value => value.buildAwsValue()))(_.dynatrace).optionallyWith(googleAnalytics.map(value => value.buildAwsValue()))(_.googleAnalytics).optionallyWith(inforNexus.map(value => value.buildAwsValue()))(_.inforNexus).optionallyWith(marketo.map(value => value.buildAwsValue()))(_.marketo).optionallyWith(redshift.map(value => value.buildAwsValue()))(_.redshift).optionallyWith(salesforce.map(value => value.buildAwsValue()))(_.salesforce).optionallyWith(serviceNow.map(value => value.buildAwsValue()))(_.serviceNow).optionallyWith(singular.map(value => value.buildAwsValue()))(_.singular).optionallyWith(slack.map(value => value.buildAwsValue()))(_.slack).optionallyWith(snowflake.map(value => value.buildAwsValue()))(_.snowflake).optionallyWith(trendmicro.map(value => value.buildAwsValue()))(_.trendmicro).optionallyWith(veeva.map(value => value.buildAwsValue()))(_.veeva).optionallyWith(zendesk.map(value => value.buildAwsValue()))(_.zendesk).build()
    }
    def asReadOnly: ConnectorProfileProperties.ReadOnly = ConnectorProfileProperties.wrap(buildAwsValue())
  }
  object ConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ConnectorProfileProperties = ConnectorProfileProperties(amplitudeValue.map(value => value.editable), datadogValue.map(value => value.editable), dynatraceValue.map(value => value.editable), googleAnalyticsValue.map(value => value.editable), inforNexusValue.map(value => value.editable), marketoValue.map(value => value.editable), redshiftValue.map(value => value.editable), salesforceValue.map(value => value.editable), serviceNowValue.map(value => value.editable), singularValue.map(value => value.editable), slackValue.map(value => value.editable), snowflakeValue.map(value => value.editable), trendmicroValue.map(value => value.editable), veevaValue.map(value => value.editable), zendeskValue.map(value => value.editable))
      def amplitudeValue: scala.Option[AmplitudeConnectorProfileProperties.ReadOnly]
      def datadogValue: scala.Option[DatadogConnectorProfileProperties.ReadOnly]
      def dynatraceValue: scala.Option[DynatraceConnectorProfileProperties.ReadOnly]
      def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorProfileProperties.ReadOnly]
      def inforNexusValue: scala.Option[InforNexusConnectorProfileProperties.ReadOnly]
      def marketoValue: scala.Option[MarketoConnectorProfileProperties.ReadOnly]
      def redshiftValue: scala.Option[RedshiftConnectorProfileProperties.ReadOnly]
      def salesforceValue: scala.Option[SalesforceConnectorProfileProperties.ReadOnly]
      def serviceNowValue: scala.Option[ServiceNowConnectorProfileProperties.ReadOnly]
      def singularValue: scala.Option[SingularConnectorProfileProperties.ReadOnly]
      def slackValue: scala.Option[SlackConnectorProfileProperties.ReadOnly]
      def snowflakeValue: scala.Option[SnowflakeConnectorProfileProperties.ReadOnly]
      def trendmicroValue: scala.Option[TrendmicroConnectorProfileProperties.ReadOnly]
      def veevaValue: scala.Option[VeevaConnectorProfileProperties.ReadOnly]
      def zendeskValue: scala.Option[ZendeskConnectorProfileProperties.ReadOnly]
      def amplitude: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AmplitudeConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("amplitude", amplitudeValue)
      def datadog: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DatadogConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datadog", datadogValue)
      def dynatrace: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DynatraceConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynatrace", dynatraceValue)
      def googleAnalytics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GoogleAnalyticsConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("googleAnalytics", googleAnalyticsValue)
      def inforNexus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InforNexusConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inforNexus", inforNexusValue)
      def marketo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarketoConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("marketo", marketoValue)
      def redshift: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RedshiftConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("redshift", redshiftValue)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def serviceNow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ServiceNowConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceNow", serviceNowValue)
      def singular: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SingularConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("singular", singularValue)
      def slack: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SlackConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("slack", slackValue)
      def snowflake: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SnowflakeConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snowflake", snowflakeValue)
      def trendmicro: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TrendmicroConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("trendmicro", trendmicroValue)
      def veeva: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, VeevaConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("veeva", veevaValue)
      def zendesk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ZendeskConnectorProfileProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zendesk", zendeskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileProperties) extends ConnectorProfileProperties.ReadOnly {
      override def amplitudeValue: scala.Option[AmplitudeConnectorProfileProperties.ReadOnly] = scala.Option(impl.amplitude()).map(value => AmplitudeConnectorProfileProperties.wrap(value))
      override def datadogValue: scala.Option[DatadogConnectorProfileProperties.ReadOnly] = scala.Option(impl.datadog()).map(value => DatadogConnectorProfileProperties.wrap(value))
      override def dynatraceValue: scala.Option[DynatraceConnectorProfileProperties.ReadOnly] = scala.Option(impl.dynatrace()).map(value => DynatraceConnectorProfileProperties.wrap(value))
      override def googleAnalyticsValue: scala.Option[GoogleAnalyticsConnectorProfileProperties.ReadOnly] = scala.Option(impl.googleAnalytics()).map(value => GoogleAnalyticsConnectorProfileProperties.wrap(value))
      override def inforNexusValue: scala.Option[InforNexusConnectorProfileProperties.ReadOnly] = scala.Option(impl.inforNexus()).map(value => InforNexusConnectorProfileProperties.wrap(value))
      override def marketoValue: scala.Option[MarketoConnectorProfileProperties.ReadOnly] = scala.Option(impl.marketo()).map(value => MarketoConnectorProfileProperties.wrap(value))
      override def redshiftValue: scala.Option[RedshiftConnectorProfileProperties.ReadOnly] = scala.Option(impl.redshift()).map(value => RedshiftConnectorProfileProperties.wrap(value))
      override def salesforceValue: scala.Option[SalesforceConnectorProfileProperties.ReadOnly] = scala.Option(impl.salesforce()).map(value => SalesforceConnectorProfileProperties.wrap(value))
      override def serviceNowValue: scala.Option[ServiceNowConnectorProfileProperties.ReadOnly] = scala.Option(impl.serviceNow()).map(value => ServiceNowConnectorProfileProperties.wrap(value))
      override def singularValue: scala.Option[SingularConnectorProfileProperties.ReadOnly] = scala.Option(impl.singular()).map(value => SingularConnectorProfileProperties.wrap(value))
      override def slackValue: scala.Option[SlackConnectorProfileProperties.ReadOnly] = scala.Option(impl.slack()).map(value => SlackConnectorProfileProperties.wrap(value))
      override def snowflakeValue: scala.Option[SnowflakeConnectorProfileProperties.ReadOnly] = scala.Option(impl.snowflake()).map(value => SnowflakeConnectorProfileProperties.wrap(value))
      override def trendmicroValue: scala.Option[TrendmicroConnectorProfileProperties.ReadOnly] = scala.Option(impl.trendmicro()).map(value => TrendmicroConnectorProfileProperties.wrap(value))
      override def veevaValue: scala.Option[VeevaConnectorProfileProperties.ReadOnly] = scala.Option(impl.veeva()).map(value => VeevaConnectorProfileProperties.wrap(value))
      override def zendeskValue: scala.Option[ZendeskConnectorProfileProperties.ReadOnly] = scala.Option(impl.zendesk()).map(value => ZendeskConnectorProfileProperties.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait ConnectorType { def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType }
  object ConnectorType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ConnectorType): ConnectorType = value match {
      case software.amazon.awssdk.services.appflow.model.ConnectorType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ConnectorType.SALESFORCE => Salesforce
      case software.amazon.awssdk.services.appflow.model.ConnectorType.SINGULAR => Singular
      case software.amazon.awssdk.services.appflow.model.ConnectorType.SLACK => Slack
      case software.amazon.awssdk.services.appflow.model.ConnectorType.REDSHIFT => Redshift
      case software.amazon.awssdk.services.appflow.model.ConnectorType.S3 => S3
      case software.amazon.awssdk.services.appflow.model.ConnectorType.MARKETO => Marketo
      case software.amazon.awssdk.services.appflow.model.ConnectorType.GOOGLEANALYTICS => Googleanalytics
      case software.amazon.awssdk.services.appflow.model.ConnectorType.ZENDESK => Zendesk
      case software.amazon.awssdk.services.appflow.model.ConnectorType.SERVICENOW => Servicenow
      case software.amazon.awssdk.services.appflow.model.ConnectorType.DATADOG => Datadog
      case software.amazon.awssdk.services.appflow.model.ConnectorType.TRENDMICRO => Trendmicro
      case software.amazon.awssdk.services.appflow.model.ConnectorType.SNOWFLAKE => Snowflake
      case software.amazon.awssdk.services.appflow.model.ConnectorType.DYNATRACE => Dynatrace
      case software.amazon.awssdk.services.appflow.model.ConnectorType.INFORNEXUS => Infornexus
      case software.amazon.awssdk.services.appflow.model.ConnectorType.AMPLITUDE => Amplitude
      case software.amazon.awssdk.services.appflow.model.ConnectorType.VEEVA => Veeva
      case software.amazon.awssdk.services.appflow.model.ConnectorType.EVENT_BRIDGE => EventBridge
      case software.amazon.awssdk.services.appflow.model.ConnectorType.UPSOLVER => Upsolver
    }
    final case object unknownToSdkVersion extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.UNKNOWN_TO_SDK_VERSION }
    final case object Salesforce extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.SALESFORCE }
    final case object Singular extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.SINGULAR }
    final case object Slack extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.SLACK }
    final case object Redshift extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.REDSHIFT }
    final case object S3 extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.S3 }
    final case object Marketo extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.MARKETO }
    final case object Googleanalytics extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.GOOGLEANALYTICS }
    final case object Zendesk extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.ZENDESK }
    final case object Servicenow extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.SERVICENOW }
    final case object Datadog extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.DATADOG }
    final case object Trendmicro extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.TRENDMICRO }
    final case object Snowflake extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.SNOWFLAKE }
    final case object Dynatrace extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.DYNATRACE }
    final case object Infornexus extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.INFORNEXUS }
    final case object Amplitude extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.AMPLITUDE }
    final case object Veeva extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.VEEVA }
    final case object EventBridge extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.EVENT_BRIDGE }
    final case object Upsolver extends ConnectorType { override def unwrap: software.amazon.awssdk.services.appflow.model.ConnectorType = software.amazon.awssdk.services.appflow.model.ConnectorType.UPSOLVER }
  }
  type ConnectorTypeList = List[ConnectorType]
  case class CreateConnectorProfileRequest(connectorProfileName: primitives.ConnectorProfileName, kmsArn: scala.Option[primitives.KMSArn] = None, connectorType: ConnectorType, connectionMode: ConnectionMode, connectorProfileConfig: ConnectorProfileConfig) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.CreateConnectorProfileRequest = {
      import CreateConnectorProfileRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.CreateConnectorProfileRequest.builder().connectorProfileName(connectorProfileName: java.lang.String).optionallyWith(kmsArn.map(value => value: java.lang.String))(_.kmsArn).connectorType(connectorType.unwrap).connectionMode(connectionMode.unwrap).connectorProfileConfig(connectorProfileConfig.buildAwsValue()).build()
    }
    def asReadOnly: CreateConnectorProfileRequest.ReadOnly = CreateConnectorProfileRequest.wrap(buildAwsValue())
  }
  object CreateConnectorProfileRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.CreateConnectorProfileRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateConnectorProfileRequest = CreateConnectorProfileRequest(connectorProfileNameValue, kmsArnValue.map(value => value), connectorTypeValue, connectionModeValue, connectorProfileConfigValue.editable)
      def connectorProfileNameValue: primitives.ConnectorProfileName
      def kmsArnValue: scala.Option[primitives.KMSArn]
      def connectorTypeValue: ConnectorType
      def connectionModeValue: ConnectionMode
      def connectorProfileConfigValue: ConnectorProfileConfig.ReadOnly
      def connectorProfileName: ZIO[Any, Nothing, primitives.ConnectorProfileName] = ZIO.succeed(connectorProfileNameValue)
      def kmsArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsArn", kmsArnValue)
      def connectorType: ZIO[Any, Nothing, ConnectorType] = ZIO.succeed(connectorTypeValue)
      def connectionMode: ZIO[Any, Nothing, ConnectionMode] = ZIO.succeed(connectionModeValue)
      def connectorProfileConfig: ZIO[Any, Nothing, ConnectorProfileConfig.ReadOnly] = ZIO.succeed(connectorProfileConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.CreateConnectorProfileRequest) extends CreateConnectorProfileRequest.ReadOnly {
      override def connectorProfileNameValue: primitives.ConnectorProfileName = impl.connectorProfileName(): primitives.ConnectorProfileName
      override def kmsArnValue: scala.Option[primitives.KMSArn] = scala.Option(impl.kmsArn()).map(value => value: primitives.KMSArn)
      override def connectorTypeValue: ConnectorType = ConnectorType.wrap(impl.connectorType())
      override def connectionModeValue: ConnectionMode = ConnectionMode.wrap(impl.connectionMode())
      override def connectorProfileConfigValue: ConnectorProfileConfig.ReadOnly = ConnectorProfileConfig.wrap(impl.connectorProfileConfig())
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.CreateConnectorProfileRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateConnectorProfileResponse(connectorProfileArn: scala.Option[primitives.ConnectorProfileArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.CreateConnectorProfileResponse = {
      import CreateConnectorProfileResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.CreateConnectorProfileResponse.builder().optionallyWith(connectorProfileArn.map(value => value: java.lang.String))(_.connectorProfileArn).build()
    }
    def asReadOnly: CreateConnectorProfileResponse.ReadOnly = CreateConnectorProfileResponse.wrap(buildAwsValue())
  }
  object CreateConnectorProfileResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.CreateConnectorProfileResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateConnectorProfileResponse = CreateConnectorProfileResponse(connectorProfileArnValue.map(value => value))
      def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn]
      def connectorProfileArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileArn", connectorProfileArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.CreateConnectorProfileResponse) extends CreateConnectorProfileResponse.ReadOnly { override def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn] = scala.Option(impl.connectorProfileArn()).map(value => value: primitives.ConnectorProfileArn) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.CreateConnectorProfileResponse): ReadOnly = new Wrapper(impl)
  }
  case class CreateFlowRequest(flowName: primitives.FlowName, description: scala.Option[primitives.FlowDescription] = None, kmsArn: scala.Option[primitives.KMSArn] = None, triggerConfig: TriggerConfig, sourceFlowConfig: SourceFlowConfig, destinationFlowConfigList: Iterable[DestinationFlowConfig], tasks: Iterable[Task], tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.CreateFlowRequest = {
      import CreateFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.CreateFlowRequest.builder().flowName(flowName: java.lang.String).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(kmsArn.map(value => value: java.lang.String))(_.kmsArn).triggerConfig(triggerConfig.buildAwsValue()).sourceFlowConfig(sourceFlowConfig.buildAwsValue()).destinationFlowConfigList(destinationFlowConfigList.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).tasks(tasks.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).build()
    }
    def asReadOnly: CreateFlowRequest.ReadOnly = CreateFlowRequest.wrap(buildAwsValue())
  }
  object CreateFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.CreateFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateFlowRequest = CreateFlowRequest(flowNameValue, descriptionValue.map(value => value), kmsArnValue.map(value => value), triggerConfigValue.editable, sourceFlowConfigValue.editable, destinationFlowConfigListValue.map { item => 
        item.editable
      }, tasksValue.map { item => 
        item.editable
      }, tagsValue.map(value => value))
      def flowNameValue: primitives.FlowName
      def descriptionValue: scala.Option[primitives.FlowDescription]
      def kmsArnValue: scala.Option[primitives.KMSArn]
      def triggerConfigValue: TriggerConfig.ReadOnly
      def sourceFlowConfigValue: SourceFlowConfig.ReadOnly
      def destinationFlowConfigListValue: List[DestinationFlowConfig.ReadOnly]
      def tasksValue: List[Task.ReadOnly]
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def kmsArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsArn", kmsArnValue)
      def triggerConfig: ZIO[Any, Nothing, TriggerConfig.ReadOnly] = ZIO.succeed(triggerConfigValue)
      def sourceFlowConfig: ZIO[Any, Nothing, SourceFlowConfig.ReadOnly] = ZIO.succeed(sourceFlowConfigValue)
      def destinationFlowConfigList: ZIO[Any, Nothing, List[DestinationFlowConfig.ReadOnly]] = ZIO.succeed(destinationFlowConfigListValue)
      def tasks: ZIO[Any, Nothing, List[Task.ReadOnly]] = ZIO.succeed(tasksValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TagKey, primitives.TagValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.CreateFlowRequest) extends CreateFlowRequest.ReadOnly {
      override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName
      override def descriptionValue: scala.Option[primitives.FlowDescription] = scala.Option(impl.description()).map(value => value: primitives.FlowDescription)
      override def kmsArnValue: scala.Option[primitives.KMSArn] = scala.Option(impl.kmsArn()).map(value => value: primitives.KMSArn)
      override def triggerConfigValue: TriggerConfig.ReadOnly = TriggerConfig.wrap(impl.triggerConfig())
      override def sourceFlowConfigValue: SourceFlowConfig.ReadOnly = SourceFlowConfig.wrap(impl.sourceFlowConfig())
      override def destinationFlowConfigListValue: List[DestinationFlowConfig.ReadOnly] = impl.destinationFlowConfigList().asScala.map { item => 
        DestinationFlowConfig.wrap(item)
      }.toList
      override def tasksValue: List[Task.ReadOnly] = impl.tasks().asScala.map { item => 
        Task.wrap(item)
      }.toList
      override def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = scala.Option(impl.tags()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TagKey) -> (value: primitives.TagValue)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.CreateFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class CreateFlowResponse(flowArn: scala.Option[primitives.FlowArn] = None, flowStatus: scala.Option[FlowStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.CreateFlowResponse = {
      import CreateFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.CreateFlowResponse.builder().optionallyWith(flowArn.map(value => value: java.lang.String))(_.flowArn).optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).build()
    }
    def asReadOnly: CreateFlowResponse.ReadOnly = CreateFlowResponse.wrap(buildAwsValue())
  }
  object CreateFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.CreateFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateFlowResponse = CreateFlowResponse(flowArnValue.map(value => value), flowStatusValue.map(value => value))
      def flowArnValue: scala.Option[primitives.FlowArn]
      def flowStatusValue: scala.Option[FlowStatus]
      def flowArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowArn", flowArnValue)
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.CreateFlowResponse) extends CreateFlowResponse.ReadOnly {
      override def flowArnValue: scala.Option[primitives.FlowArn] = scala.Option(impl.flowArn()).map(value => value: primitives.FlowArn)
      override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.CreateFlowResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait DataPullMode { def unwrap: software.amazon.awssdk.services.appflow.model.DataPullMode }
  object DataPullMode {
    def wrap(value: software.amazon.awssdk.services.appflow.model.DataPullMode): DataPullMode = value match {
      case software.amazon.awssdk.services.appflow.model.DataPullMode.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.DataPullMode.INCREMENTAL => Incremental
      case software.amazon.awssdk.services.appflow.model.DataPullMode.COMPLETE => Complete
    }
    final case object unknownToSdkVersion extends DataPullMode { override def unwrap: software.amazon.awssdk.services.appflow.model.DataPullMode = software.amazon.awssdk.services.appflow.model.DataPullMode.UNKNOWN_TO_SDK_VERSION }
    final case object Incremental extends DataPullMode { override def unwrap: software.amazon.awssdk.services.appflow.model.DataPullMode = software.amazon.awssdk.services.appflow.model.DataPullMode.INCREMENTAL }
    final case object Complete extends DataPullMode { override def unwrap: software.amazon.awssdk.services.appflow.model.DataPullMode = software.amazon.awssdk.services.appflow.model.DataPullMode.COMPLETE }
  }
  sealed trait DatadogConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator }
  object DatadogConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator): DatadogConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.PROJECTION }
    final case object BETWEEN extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.BETWEEN }
    final case object EQUAL_TO extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.EQUAL_TO }
    final case object ADDITION extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.DIVISION }
    final case object SUBTRACTION extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends DatadogConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator = software.amazon.awssdk.services.appflow.model.DatadogConnectorOperator.NO_OP }
  }
  case class DatadogConnectorProfileCredentials(apiKey: primitives.ApiKey, applicationKey: primitives.ApplicationKey) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileCredentials = {
      import DatadogConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileCredentials.builder().apiKey(apiKey: java.lang.String).applicationKey(applicationKey: java.lang.String).build()
    }
    def asReadOnly: DatadogConnectorProfileCredentials.ReadOnly = DatadogConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object DatadogConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DatadogConnectorProfileCredentials = DatadogConnectorProfileCredentials(apiKeyValue, applicationKeyValue)
      def apiKeyValue: primitives.ApiKey
      def applicationKeyValue: primitives.ApplicationKey
      def apiKey: ZIO[Any, Nothing, primitives.ApiKey] = ZIO.succeed(apiKeyValue)
      def applicationKey: ZIO[Any, Nothing, primitives.ApplicationKey] = ZIO.succeed(applicationKeyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileCredentials) extends DatadogConnectorProfileCredentials.ReadOnly {
      override def apiKeyValue: primitives.ApiKey = impl.apiKey(): primitives.ApiKey
      override def applicationKeyValue: primitives.ApplicationKey = impl.applicationKey(): primitives.ApplicationKey
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class DatadogConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileProperties = {
      import DatadogConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: DatadogConnectorProfileProperties.ReadOnly = DatadogConnectorProfileProperties.wrap(buildAwsValue())
  }
  object DatadogConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DatadogConnectorProfileProperties = DatadogConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileProperties) extends DatadogConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DatadogConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class DatadogMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DatadogMetadata = {
      import DatadogMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DatadogMetadata.builder().build()
    }
    def asReadOnly: DatadogMetadata.ReadOnly = DatadogMetadata.wrap(buildAwsValue())
  }
  object DatadogMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DatadogMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DatadogMetadata = DatadogMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DatadogMetadata) extends DatadogMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DatadogMetadata): ReadOnly = new Wrapper(impl)
  }
  case class DatadogSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DatadogSourceProperties = {
      import DatadogSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DatadogSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: DatadogSourceProperties.ReadOnly = DatadogSourceProperties.wrap(buildAwsValue())
  }
  object DatadogSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DatadogSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DatadogSourceProperties = DatadogSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DatadogSourceProperties) extends DatadogSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DatadogSourceProperties): ReadOnly = new Wrapper(impl)
  }
  case class DeleteConnectorProfileRequest(connectorProfileName: primitives.ConnectorProfileName, forceDelete: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileRequest = {
      import DeleteConnectorProfileRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileRequest.builder().connectorProfileName(connectorProfileName: java.lang.String).optionallyWith(forceDelete.map(value => value: java.lang.Boolean))(_.forceDelete).build()
    }
    def asReadOnly: DeleteConnectorProfileRequest.ReadOnly = DeleteConnectorProfileRequest.wrap(buildAwsValue())
  }
  object DeleteConnectorProfileRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteConnectorProfileRequest = DeleteConnectorProfileRequest(connectorProfileNameValue, forceDeleteValue.map(value => value))
      def connectorProfileNameValue: primitives.ConnectorProfileName
      def forceDeleteValue: scala.Option[Boolean]
      def connectorProfileName: ZIO[Any, Nothing, primitives.ConnectorProfileName] = ZIO.succeed(connectorProfileNameValue)
      def forceDelete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forceDelete", forceDeleteValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileRequest) extends DeleteConnectorProfileRequest.ReadOnly {
      override def connectorProfileNameValue: primitives.ConnectorProfileName = impl.connectorProfileName(): primitives.ConnectorProfileName
      override def forceDeleteValue: scala.Option[Boolean] = scala.Option(impl.forceDelete()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteConnectorProfileResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileResponse = {
      import DeleteConnectorProfileResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileResponse.builder().build()
    }
    def asReadOnly: DeleteConnectorProfileResponse.ReadOnly = DeleteConnectorProfileResponse.wrap(buildAwsValue())
  }
  object DeleteConnectorProfileResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DeleteConnectorProfileResponse = DeleteConnectorProfileResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileResponse) extends DeleteConnectorProfileResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DeleteConnectorProfileResponse): ReadOnly = new Wrapper(impl)
  }
  case class DeleteFlowRequest(flowName: primitives.FlowName, forceDelete: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DeleteFlowRequest = {
      import DeleteFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DeleteFlowRequest.builder().flowName(flowName: java.lang.String).optionallyWith(forceDelete.map(value => value: java.lang.Boolean))(_.forceDelete).build()
    }
    def asReadOnly: DeleteFlowRequest.ReadOnly = DeleteFlowRequest.wrap(buildAwsValue())
  }
  object DeleteFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DeleteFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteFlowRequest = DeleteFlowRequest(flowNameValue, forceDeleteValue.map(value => value))
      def flowNameValue: primitives.FlowName
      def forceDeleteValue: scala.Option[Boolean]
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
      def forceDelete: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forceDelete", forceDeleteValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DeleteFlowRequest) extends DeleteFlowRequest.ReadOnly {
      override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName
      override def forceDeleteValue: scala.Option[Boolean] = scala.Option(impl.forceDelete()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DeleteFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class DeleteFlowResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DeleteFlowResponse = {
      import DeleteFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DeleteFlowResponse.builder().build()
    }
    def asReadOnly: DeleteFlowResponse.ReadOnly = DeleteFlowResponse.wrap(buildAwsValue())
  }
  object DeleteFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DeleteFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DeleteFlowResponse = DeleteFlowResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DeleteFlowResponse) extends DeleteFlowResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DeleteFlowResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorEntityRequest(connectorEntityName: primitives.Name, connectorType: scala.Option[ConnectorType] = None, connectorProfileName: scala.Option[primitives.ConnectorProfileName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityRequest = {
      import DescribeConnectorEntityRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityRequest.builder().connectorEntityName(connectorEntityName: java.lang.String).optionallyWith(connectorType.map(value => value.unwrap))(_.connectorType).optionallyWith(connectorProfileName.map(value => value: java.lang.String))(_.connectorProfileName).build()
    }
    def asReadOnly: DescribeConnectorEntityRequest.ReadOnly = DescribeConnectorEntityRequest.wrap(buildAwsValue())
  }
  object DescribeConnectorEntityRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorEntityRequest = DescribeConnectorEntityRequest(connectorEntityNameValue, connectorTypeValue.map(value => value), connectorProfileNameValue.map(value => value))
      def connectorEntityNameValue: primitives.Name
      def connectorTypeValue: scala.Option[ConnectorType]
      def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName]
      def connectorEntityName: ZIO[Any, Nothing, primitives.Name] = ZIO.succeed(connectorEntityNameValue)
      def connectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorType", connectorTypeValue)
      def connectorProfileName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileName", connectorProfileNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityRequest) extends DescribeConnectorEntityRequest.ReadOnly {
      override def connectorEntityNameValue: primitives.Name = impl.connectorEntityName(): primitives.Name
      override def connectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.connectorType()).map(value => ConnectorType.wrap(value))
      override def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName] = scala.Option(impl.connectorProfileName()).map(value => value: primitives.ConnectorProfileName)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorEntityResponse(connectorEntityFields: Iterable[ConnectorEntityField]) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityResponse = {
      import DescribeConnectorEntityResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityResponse.builder().connectorEntityFields(connectorEntityFields.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: DescribeConnectorEntityResponse.ReadOnly = DescribeConnectorEntityResponse.wrap(buildAwsValue())
  }
  object DescribeConnectorEntityResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorEntityResponse = DescribeConnectorEntityResponse(connectorEntityFieldsValue.map { item => 
        item.editable
      })
      def connectorEntityFieldsValue: List[ConnectorEntityField.ReadOnly]
      def connectorEntityFields: ZIO[Any, Nothing, List[ConnectorEntityField.ReadOnly]] = ZIO.succeed(connectorEntityFieldsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityResponse) extends DescribeConnectorEntityResponse.ReadOnly {
      override def connectorEntityFieldsValue: List[ConnectorEntityField.ReadOnly] = impl.connectorEntityFields().asScala.map { item => 
        ConnectorEntityField.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorEntityResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorProfilesRequest(connectorProfileNames: scala.Option[Iterable[primitives.ConnectorProfileName]] = None, connectorType: scala.Option[ConnectorType] = None, maxResults: scala.Option[primitives.MaxResults] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesRequest = {
      import DescribeConnectorProfilesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesRequest.builder().optionallyWith(connectorProfileNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.connectorProfileNames).optionallyWith(connectorType.map(value => value.unwrap))(_.connectorType).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeConnectorProfilesRequest.ReadOnly = DescribeConnectorProfilesRequest.wrap(buildAwsValue())
  }
  object DescribeConnectorProfilesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorProfilesRequest = DescribeConnectorProfilesRequest(connectorProfileNamesValue.map(value => value), connectorTypeValue.map(value => value), maxResultsValue.map(value => value), nextTokenValue.map(value => value))
      def connectorProfileNamesValue: scala.Option[List[primitives.ConnectorProfileName]]
      def connectorTypeValue: scala.Option[ConnectorType]
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def connectorProfileNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.ConnectorProfileName]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileNames", connectorProfileNamesValue)
      def connectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorType", connectorTypeValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesRequest) extends DescribeConnectorProfilesRequest.ReadOnly {
      override def connectorProfileNamesValue: scala.Option[List[primitives.ConnectorProfileName]] = scala.Option(impl.connectorProfileNames()).map(value => value.asScala.map { item => 
        item: primitives.ConnectorProfileName
      }.toList)
      override def connectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.connectorType()).map(value => ConnectorType.wrap(value))
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorProfilesResponse(connectorProfileDetails: scala.Option[Iterable[ConnectorProfile]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesResponse = {
      import DescribeConnectorProfilesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesResponse.builder().optionallyWith(connectorProfileDetails.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.connectorProfileDetails).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeConnectorProfilesResponse.ReadOnly = DescribeConnectorProfilesResponse.wrap(buildAwsValue())
  }
  object DescribeConnectorProfilesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorProfilesResponse = DescribeConnectorProfilesResponse(connectorProfileDetailsValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def connectorProfileDetailsValue: scala.Option[List[ConnectorProfile.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def connectorProfileDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConnectorProfile.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileDetails", connectorProfileDetailsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesResponse) extends DescribeConnectorProfilesResponse.ReadOnly {
      override def connectorProfileDetailsValue: scala.Option[List[ConnectorProfile.ReadOnly]] = scala.Option(impl.connectorProfileDetails()).map(value => value.asScala.map { item => 
        ConnectorProfile.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorProfilesResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorsRequest(connectorTypes: scala.Option[Iterable[ConnectorType]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorsRequest = {
      import DescribeConnectorsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorsRequest.builder().optionallyWith(connectorTypes.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.connectorTypesWithStrings).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeConnectorsRequest.ReadOnly = DescribeConnectorsRequest.wrap(buildAwsValue())
  }
  object DescribeConnectorsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorsRequest = DescribeConnectorsRequest(connectorTypesValue.map(value => value), nextTokenValue.map(value => value))
      def connectorTypesValue: scala.Option[List[ConnectorType]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def connectorTypes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ConnectorType]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorTypes", connectorTypesValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorsRequest) extends DescribeConnectorsRequest.ReadOnly {
      override def connectorTypesValue: scala.Option[List[ConnectorType]] = scala.Option(impl.connectorTypes()).map(value => value.asScala.map { item => 
        ConnectorType.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeConnectorsResponse(connectorConfigurations: scala.Option[Map[ConnectorType, ConnectorConfiguration]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeConnectorsResponse = {
      import DescribeConnectorsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeConnectorsResponse.builder().optionallyWith(connectorConfigurations.map(value => value.map({
        case (key, value) =>
          key.unwrap.toString -> value.buildAwsValue()
      }).asJava))(_.connectorConfigurationsWithStrings).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeConnectorsResponse.ReadOnly = DescribeConnectorsResponse.wrap(buildAwsValue())
  }
  object DescribeConnectorsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeConnectorsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeConnectorsResponse = DescribeConnectorsResponse(connectorConfigurationsValue.map(value => value.map({
        case (key, value) =>
          key -> value.editable
      })), nextTokenValue.map(value => value))
      def connectorConfigurationsValue: scala.Option[Map[ConnectorType, ConnectorConfiguration.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def connectorConfigurations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[ConnectorType, ConnectorConfiguration.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorConfigurations", connectorConfigurationsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorsResponse) extends DescribeConnectorsResponse.ReadOnly {
      override def connectorConfigurationsValue: scala.Option[Map[ConnectorType, ConnectorConfiguration.ReadOnly]] = scala.Option(impl.connectorConfigurations()).map(value => value.asScala.map({
        case (key, value) =>
          ConnectorType.wrap(key) -> ConnectorConfiguration.wrap(value)
      }).toMap)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeConnectorsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeFlowExecutionRecordsRequest(flowName: primitives.FlowName, maxResults: scala.Option[primitives.MaxResults] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsRequest = {
      import DescribeFlowExecutionRecordsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsRequest.builder().flowName(flowName: java.lang.String).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeFlowExecutionRecordsRequest.ReadOnly = DescribeFlowExecutionRecordsRequest.wrap(buildAwsValue())
  }
  object DescribeFlowExecutionRecordsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeFlowExecutionRecordsRequest = DescribeFlowExecutionRecordsRequest(flowNameValue, maxResultsValue.map(value => value), nextTokenValue.map(value => value))
      def flowNameValue: primitives.FlowName
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsRequest) extends DescribeFlowExecutionRecordsRequest.ReadOnly {
      override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeFlowExecutionRecordsResponse(flowExecutions: scala.Option[Iterable[ExecutionRecord]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsResponse = {
      import DescribeFlowExecutionRecordsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsResponse.builder().optionallyWith(flowExecutions.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.flowExecutions).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: DescribeFlowExecutionRecordsResponse.ReadOnly = DescribeFlowExecutionRecordsResponse.wrap(buildAwsValue())
  }
  object DescribeFlowExecutionRecordsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeFlowExecutionRecordsResponse = DescribeFlowExecutionRecordsResponse(flowExecutionsValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def flowExecutionsValue: scala.Option[List[ExecutionRecord.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def flowExecutions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ExecutionRecord.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowExecutions", flowExecutionsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsResponse) extends DescribeFlowExecutionRecordsResponse.ReadOnly {
      override def flowExecutionsValue: scala.Option[List[ExecutionRecord.ReadOnly]] = scala.Option(impl.flowExecutions()).map(value => value.asScala.map { item => 
        ExecutionRecord.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowExecutionRecordsResponse): ReadOnly = new Wrapper(impl)
  }
  case class DescribeFlowRequest(flowName: primitives.FlowName) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeFlowRequest = {
      import DescribeFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeFlowRequest.builder().flowName(flowName: java.lang.String).build()
    }
    def asReadOnly: DescribeFlowRequest.ReadOnly = DescribeFlowRequest.wrap(buildAwsValue())
  }
  object DescribeFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeFlowRequest = DescribeFlowRequest(flowNameValue)
      def flowNameValue: primitives.FlowName
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowRequest) extends DescribeFlowRequest.ReadOnly { override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class DescribeFlowResponse(flowArn: scala.Option[primitives.FlowArn] = None, description: scala.Option[primitives.FlowDescription] = None, flowName: scala.Option[primitives.FlowName] = None, kmsArn: scala.Option[primitives.KMSArn] = None, flowStatus: scala.Option[FlowStatus] = None, flowStatusMessage: scala.Option[primitives.FlowStatusMessage] = None, sourceFlowConfig: scala.Option[SourceFlowConfig] = None, destinationFlowConfigList: scala.Option[Iterable[DestinationFlowConfig]] = None, lastRunExecutionDetails: scala.Option[ExecutionDetails] = None, triggerConfig: scala.Option[TriggerConfig] = None, tasks: scala.Option[Iterable[Task]] = None, createdAt: scala.Option[primitives.Date] = None, lastUpdatedAt: scala.Option[primitives.Date] = None, createdBy: scala.Option[primitives.CreatedBy] = None, lastUpdatedBy: scala.Option[primitives.UpdatedBy] = None, tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DescribeFlowResponse = {
      import DescribeFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DescribeFlowResponse.builder().optionallyWith(flowArn.map(value => value: java.lang.String))(_.flowArn).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(flowName.map(value => value: java.lang.String))(_.flowName).optionallyWith(kmsArn.map(value => value: java.lang.String))(_.kmsArn).optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).optionallyWith(flowStatusMessage.map(value => value: java.lang.String))(_.flowStatusMessage).optionallyWith(sourceFlowConfig.map(value => value.buildAwsValue()))(_.sourceFlowConfig).optionallyWith(destinationFlowConfigList.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.destinationFlowConfigList).optionallyWith(lastRunExecutionDetails.map(value => value.buildAwsValue()))(_.lastRunExecutionDetails).optionallyWith(triggerConfig.map(value => value.buildAwsValue()))(_.triggerConfig).optionallyWith(tasks.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.tasks).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(lastUpdatedAt.map(value => value: java.time.Instant))(_.lastUpdatedAt).optionallyWith(createdBy.map(value => value: java.lang.String))(_.createdBy).optionallyWith(lastUpdatedBy.map(value => value: java.lang.String))(_.lastUpdatedBy).optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).build()
    }
    def asReadOnly: DescribeFlowResponse.ReadOnly = DescribeFlowResponse.wrap(buildAwsValue())
  }
  object DescribeFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DescribeFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeFlowResponse = DescribeFlowResponse(flowArnValue.map(value => value), descriptionValue.map(value => value), flowNameValue.map(value => value), kmsArnValue.map(value => value), flowStatusValue.map(value => value), flowStatusMessageValue.map(value => value), sourceFlowConfigValue.map(value => value.editable), destinationFlowConfigListValue.map(value => value.map { item => 
        item.editable
      }), lastRunExecutionDetailsValue.map(value => value.editable), triggerConfigValue.map(value => value.editable), tasksValue.map(value => value.map { item => 
        item.editable
      }), createdAtValue.map(value => value), lastUpdatedAtValue.map(value => value), createdByValue.map(value => value), lastUpdatedByValue.map(value => value), tagsValue.map(value => value))
      def flowArnValue: scala.Option[primitives.FlowArn]
      def descriptionValue: scala.Option[primitives.FlowDescription]
      def flowNameValue: scala.Option[primitives.FlowName]
      def kmsArnValue: scala.Option[primitives.KMSArn]
      def flowStatusValue: scala.Option[FlowStatus]
      def flowStatusMessageValue: scala.Option[primitives.FlowStatusMessage]
      def sourceFlowConfigValue: scala.Option[SourceFlowConfig.ReadOnly]
      def destinationFlowConfigListValue: scala.Option[List[DestinationFlowConfig.ReadOnly]]
      def lastRunExecutionDetailsValue: scala.Option[ExecutionDetails.ReadOnly]
      def triggerConfigValue: scala.Option[TriggerConfig.ReadOnly]
      def tasksValue: scala.Option[List[Task.ReadOnly]]
      def createdAtValue: scala.Option[primitives.Date]
      def lastUpdatedAtValue: scala.Option[primitives.Date]
      def createdByValue: scala.Option[primitives.CreatedBy]
      def lastUpdatedByValue: scala.Option[primitives.UpdatedBy]
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def flowArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowArn", flowArnValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def flowName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowName", flowNameValue)
      def kmsArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.KMSArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("kmsArn", kmsArnValue)
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
      def flowStatusMessage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowStatusMessage] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatusMessage", flowStatusMessageValue)
      def sourceFlowConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SourceFlowConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceFlowConfig", sourceFlowConfigValue)
      def destinationFlowConfigList: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[DestinationFlowConfig.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationFlowConfigList", destinationFlowConfigListValue)
      def lastRunExecutionDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastRunExecutionDetails", lastRunExecutionDetailsValue)
      def triggerConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TriggerConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("triggerConfig", triggerConfigValue)
      def tasks: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Task.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tasks", tasksValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def lastUpdatedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedAt", lastUpdatedAtValue)
      def createdBy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CreatedBy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdBy", createdByValue)
      def lastUpdatedBy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.UpdatedBy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedBy", lastUpdatedByValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TagKey, primitives.TagValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowResponse) extends DescribeFlowResponse.ReadOnly {
      override def flowArnValue: scala.Option[primitives.FlowArn] = scala.Option(impl.flowArn()).map(value => value: primitives.FlowArn)
      override def descriptionValue: scala.Option[primitives.FlowDescription] = scala.Option(impl.description()).map(value => value: primitives.FlowDescription)
      override def flowNameValue: scala.Option[primitives.FlowName] = scala.Option(impl.flowName()).map(value => value: primitives.FlowName)
      override def kmsArnValue: scala.Option[primitives.KMSArn] = scala.Option(impl.kmsArn()).map(value => value: primitives.KMSArn)
      override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value))
      override def flowStatusMessageValue: scala.Option[primitives.FlowStatusMessage] = scala.Option(impl.flowStatusMessage()).map(value => value: primitives.FlowStatusMessage)
      override def sourceFlowConfigValue: scala.Option[SourceFlowConfig.ReadOnly] = scala.Option(impl.sourceFlowConfig()).map(value => SourceFlowConfig.wrap(value))
      override def destinationFlowConfigListValue: scala.Option[List[DestinationFlowConfig.ReadOnly]] = scala.Option(impl.destinationFlowConfigList()).map(value => value.asScala.map { item => 
        DestinationFlowConfig.wrap(item)
      }.toList)
      override def lastRunExecutionDetailsValue: scala.Option[ExecutionDetails.ReadOnly] = scala.Option(impl.lastRunExecutionDetails()).map(value => ExecutionDetails.wrap(value))
      override def triggerConfigValue: scala.Option[TriggerConfig.ReadOnly] = scala.Option(impl.triggerConfig()).map(value => TriggerConfig.wrap(value))
      override def tasksValue: scala.Option[List[Task.ReadOnly]] = scala.Option(impl.tasks()).map(value => value.asScala.map { item => 
        Task.wrap(item)
      }.toList)
      override def createdAtValue: scala.Option[primitives.Date] = scala.Option(impl.createdAt()).map(value => value: primitives.Date)
      override def lastUpdatedAtValue: scala.Option[primitives.Date] = scala.Option(impl.lastUpdatedAt()).map(value => value: primitives.Date)
      override def createdByValue: scala.Option[primitives.CreatedBy] = scala.Option(impl.createdBy()).map(value => value: primitives.CreatedBy)
      override def lastUpdatedByValue: scala.Option[primitives.UpdatedBy] = scala.Option(impl.lastUpdatedBy()).map(value => value: primitives.UpdatedBy)
      override def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = scala.Option(impl.tags()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TagKey) -> (value: primitives.TagValue)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DescribeFlowResponse): ReadOnly = new Wrapper(impl)
  }
  case class DestinationConnectorProperties(redshift: scala.Option[RedshiftDestinationProperties] = None, s3: scala.Option[S3DestinationProperties] = None, salesforce: scala.Option[SalesforceDestinationProperties] = None, snowflake: scala.Option[SnowflakeDestinationProperties] = None, eventBridge: scala.Option[EventBridgeDestinationProperties] = None, upsolver: scala.Option[UpsolverDestinationProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DestinationConnectorProperties = {
      import DestinationConnectorProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DestinationConnectorProperties.builder().optionallyWith(redshift.map(value => value.buildAwsValue()))(_.redshift).optionallyWith(s3.map(value => value.buildAwsValue()))(_.s3).optionallyWith(salesforce.map(value => value.buildAwsValue()))(_.salesforce).optionallyWith(snowflake.map(value => value.buildAwsValue()))(_.snowflake).optionallyWith(eventBridge.map(value => value.buildAwsValue()))(_.eventBridge).optionallyWith(upsolver.map(value => value.buildAwsValue()))(_.upsolver).build()
    }
    def asReadOnly: DestinationConnectorProperties.ReadOnly = DestinationConnectorProperties.wrap(buildAwsValue())
  }
  object DestinationConnectorProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DestinationConnectorProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DestinationConnectorProperties = DestinationConnectorProperties(redshiftValue.map(value => value.editable), s3Value.map(value => value.editable), salesforceValue.map(value => value.editable), snowflakeValue.map(value => value.editable), eventBridgeValue.map(value => value.editable), upsolverValue.map(value => value.editable))
      def redshiftValue: scala.Option[RedshiftDestinationProperties.ReadOnly]
      def s3Value: scala.Option[S3DestinationProperties.ReadOnly]
      def salesforceValue: scala.Option[SalesforceDestinationProperties.ReadOnly]
      def snowflakeValue: scala.Option[SnowflakeDestinationProperties.ReadOnly]
      def eventBridgeValue: scala.Option[EventBridgeDestinationProperties.ReadOnly]
      def upsolverValue: scala.Option[UpsolverDestinationProperties.ReadOnly]
      def redshift: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, RedshiftDestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("redshift", redshiftValue)
      def s3: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3DestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3", s3Value)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceDestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def snowflake: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SnowflakeDestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("snowflake", snowflakeValue)
      def eventBridge: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, EventBridgeDestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventBridge", eventBridgeValue)
      def upsolver: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, UpsolverDestinationProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("upsolver", upsolverValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DestinationConnectorProperties) extends DestinationConnectorProperties.ReadOnly {
      override def redshiftValue: scala.Option[RedshiftDestinationProperties.ReadOnly] = scala.Option(impl.redshift()).map(value => RedshiftDestinationProperties.wrap(value))
      override def s3Value: scala.Option[S3DestinationProperties.ReadOnly] = scala.Option(impl.s3()).map(value => S3DestinationProperties.wrap(value))
      override def salesforceValue: scala.Option[SalesforceDestinationProperties.ReadOnly] = scala.Option(impl.salesforce()).map(value => SalesforceDestinationProperties.wrap(value))
      override def snowflakeValue: scala.Option[SnowflakeDestinationProperties.ReadOnly] = scala.Option(impl.snowflake()).map(value => SnowflakeDestinationProperties.wrap(value))
      override def eventBridgeValue: scala.Option[EventBridgeDestinationProperties.ReadOnly] = scala.Option(impl.eventBridge()).map(value => EventBridgeDestinationProperties.wrap(value))
      override def upsolverValue: scala.Option[UpsolverDestinationProperties.ReadOnly] = scala.Option(impl.upsolver()).map(value => UpsolverDestinationProperties.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DestinationConnectorProperties): ReadOnly = new Wrapper(impl)
  }
  case class DestinationFieldProperties(isCreatable: scala.Option[Boolean] = None, isNullable: scala.Option[Boolean] = None, isUpsertable: scala.Option[Boolean] = None, isUpdatable: scala.Option[Boolean] = None, supportedWriteOperations: scala.Option[Iterable[WriteOperationType]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DestinationFieldProperties = {
      import DestinationFieldProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DestinationFieldProperties.builder().optionallyWith(isCreatable.map(value => value: java.lang.Boolean))(_.isCreatable).optionallyWith(isNullable.map(value => value: java.lang.Boolean))(_.isNullable).optionallyWith(isUpsertable.map(value => value: java.lang.Boolean))(_.isUpsertable).optionallyWith(isUpdatable.map(value => value: java.lang.Boolean))(_.isUpdatable).optionallyWith(supportedWriteOperations.map(value => value.map { item => 
        item.unwrap.toString
      }.asJavaCollection))(_.supportedWriteOperationsWithStrings).build()
    }
    def asReadOnly: DestinationFieldProperties.ReadOnly = DestinationFieldProperties.wrap(buildAwsValue())
  }
  object DestinationFieldProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DestinationFieldProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DestinationFieldProperties = DestinationFieldProperties(isCreatableValue.map(value => value), isNullableValue.map(value => value), isUpsertableValue.map(value => value), isUpdatableValue.map(value => value), supportedWriteOperationsValue.map(value => value))
      def isCreatableValue: scala.Option[Boolean]
      def isNullableValue: scala.Option[Boolean]
      def isUpsertableValue: scala.Option[Boolean]
      def isUpdatableValue: scala.Option[Boolean]
      def supportedWriteOperationsValue: scala.Option[List[WriteOperationType]]
      def isCreatable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isCreatable", isCreatableValue)
      def isNullable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isNullable", isNullableValue)
      def isUpsertable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isUpsertable", isUpsertableValue)
      def isUpdatable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isUpdatable", isUpdatableValue)
      def supportedWriteOperations: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[WriteOperationType]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedWriteOperations", supportedWriteOperationsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DestinationFieldProperties) extends DestinationFieldProperties.ReadOnly {
      override def isCreatableValue: scala.Option[Boolean] = scala.Option(impl.isCreatable()).map(value => value: Boolean)
      override def isNullableValue: scala.Option[Boolean] = scala.Option(impl.isNullable()).map(value => value: Boolean)
      override def isUpsertableValue: scala.Option[Boolean] = scala.Option(impl.isUpsertable()).map(value => value: Boolean)
      override def isUpdatableValue: scala.Option[Boolean] = scala.Option(impl.isUpdatable()).map(value => value: Boolean)
      override def supportedWriteOperationsValue: scala.Option[List[WriteOperationType]] = scala.Option(impl.supportedWriteOperations()).map(value => value.asScala.map { item => 
        WriteOperationType.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DestinationFieldProperties): ReadOnly = new Wrapper(impl)
  }
  case class DestinationFlowConfig(connectorType: ConnectorType, connectorProfileName: scala.Option[primitives.ConnectorProfileName] = None, destinationConnectorProperties: DestinationConnectorProperties) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DestinationFlowConfig = {
      import DestinationFlowConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DestinationFlowConfig.builder().connectorType(connectorType.unwrap).optionallyWith(connectorProfileName.map(value => value: java.lang.String))(_.connectorProfileName).destinationConnectorProperties(destinationConnectorProperties.buildAwsValue()).build()
    }
    def asReadOnly: DestinationFlowConfig.ReadOnly = DestinationFlowConfig.wrap(buildAwsValue())
  }
  object DestinationFlowConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DestinationFlowConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DestinationFlowConfig = DestinationFlowConfig(connectorTypeValue, connectorProfileNameValue.map(value => value), destinationConnectorPropertiesValue.editable)
      def connectorTypeValue: ConnectorType
      def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName]
      def destinationConnectorPropertiesValue: DestinationConnectorProperties.ReadOnly
      def connectorType: ZIO[Any, Nothing, ConnectorType] = ZIO.succeed(connectorTypeValue)
      def connectorProfileName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileName", connectorProfileNameValue)
      def destinationConnectorProperties: ZIO[Any, Nothing, DestinationConnectorProperties.ReadOnly] = ZIO.succeed(destinationConnectorPropertiesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DestinationFlowConfig) extends DestinationFlowConfig.ReadOnly {
      override def connectorTypeValue: ConnectorType = ConnectorType.wrap(impl.connectorType())
      override def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName] = scala.Option(impl.connectorProfileName()).map(value => value: primitives.ConnectorProfileName)
      override def destinationConnectorPropertiesValue: DestinationConnectorProperties.ReadOnly = DestinationConnectorProperties.wrap(impl.destinationConnectorProperties())
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DestinationFlowConfig): ReadOnly = new Wrapper(impl)
  }
  type DestinationFlowConfigList = List[DestinationFlowConfig]
  sealed trait DynatraceConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator }
  object DynatraceConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator): DynatraceConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.PROJECTION }
    final case object BETWEEN extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.BETWEEN }
    final case object EQUAL_TO extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.EQUAL_TO }
    final case object ADDITION extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.DIVISION }
    final case object SUBTRACTION extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends DynatraceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator = software.amazon.awssdk.services.appflow.model.DynatraceConnectorOperator.NO_OP }
  }
  case class DynatraceConnectorProfileCredentials(apiToken: primitives.ApiToken) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileCredentials = {
      import DynatraceConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileCredentials.builder().apiToken(apiToken: java.lang.String).build()
    }
    def asReadOnly: DynatraceConnectorProfileCredentials.ReadOnly = DynatraceConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object DynatraceConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DynatraceConnectorProfileCredentials = DynatraceConnectorProfileCredentials(apiTokenValue)
      def apiTokenValue: primitives.ApiToken
      def apiToken: ZIO[Any, Nothing, primitives.ApiToken] = ZIO.succeed(apiTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileCredentials) extends DynatraceConnectorProfileCredentials.ReadOnly { override def apiTokenValue: primitives.ApiToken = impl.apiToken(): primitives.ApiToken }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class DynatraceConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileProperties = {
      import DynatraceConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: DynatraceConnectorProfileProperties.ReadOnly = DynatraceConnectorProfileProperties.wrap(buildAwsValue())
  }
  object DynatraceConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DynatraceConnectorProfileProperties = DynatraceConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileProperties) extends DynatraceConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DynatraceConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class DynatraceMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DynatraceMetadata = {
      import DynatraceMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DynatraceMetadata.builder().build()
    }
    def asReadOnly: DynatraceMetadata.ReadOnly = DynatraceMetadata.wrap(buildAwsValue())
  }
  object DynatraceMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DynatraceMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DynatraceMetadata = DynatraceMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DynatraceMetadata) extends DynatraceMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DynatraceMetadata): ReadOnly = new Wrapper(impl)
  }
  case class DynatraceSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.DynatraceSourceProperties = {
      import DynatraceSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.DynatraceSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: DynatraceSourceProperties.ReadOnly = DynatraceSourceProperties.wrap(buildAwsValue())
  }
  object DynatraceSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.DynatraceSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DynatraceSourceProperties = DynatraceSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.DynatraceSourceProperties) extends DynatraceSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.DynatraceSourceProperties): ReadOnly = new Wrapper(impl)
  }
  case class ErrorHandlingConfig(failOnFirstDestinationError: scala.Option[Boolean] = None, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, bucketName: scala.Option[primitives.BucketName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ErrorHandlingConfig = {
      import ErrorHandlingConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ErrorHandlingConfig.builder().optionallyWith(failOnFirstDestinationError.map(value => value: java.lang.Boolean))(_.failOnFirstDestinationError).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).optionallyWith(bucketName.map(value => value: java.lang.String))(_.bucketName).build()
    }
    def asReadOnly: ErrorHandlingConfig.ReadOnly = ErrorHandlingConfig.wrap(buildAwsValue())
  }
  object ErrorHandlingConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ErrorHandlingConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ErrorHandlingConfig = ErrorHandlingConfig(failOnFirstDestinationErrorValue.map(value => value), bucketPrefixValue.map(value => value), bucketNameValue.map(value => value))
      def failOnFirstDestinationErrorValue: scala.Option[Boolean]
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def bucketNameValue: scala.Option[primitives.BucketName]
      def failOnFirstDestinationError: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("failOnFirstDestinationError", failOnFirstDestinationErrorValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def bucketName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketName", bucketNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ErrorHandlingConfig) extends ErrorHandlingConfig.ReadOnly {
      override def failOnFirstDestinationErrorValue: scala.Option[Boolean] = scala.Option(impl.failOnFirstDestinationError()).map(value => value: Boolean)
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def bucketNameValue: scala.Option[primitives.BucketName] = scala.Option(impl.bucketName()).map(value => value: primitives.BucketName)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ErrorHandlingConfig): ReadOnly = new Wrapper(impl)
  }
  case class ErrorInfo(putFailuresCount: scala.Option[Long] = None, executionMessage: scala.Option[primitives.ExecutionMessage] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ErrorInfo = {
      import ErrorInfo.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ErrorInfo.builder().optionallyWith(putFailuresCount.map(value => value: java.lang.Long))(_.putFailuresCount).optionallyWith(executionMessage.map(value => value: java.lang.String))(_.executionMessage).build()
    }
    def asReadOnly: ErrorInfo.ReadOnly = ErrorInfo.wrap(buildAwsValue())
  }
  object ErrorInfo {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ErrorInfo] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ErrorInfo = ErrorInfo(putFailuresCountValue.map(value => value), executionMessageValue.map(value => value))
      def putFailuresCountValue: scala.Option[Long]
      def executionMessageValue: scala.Option[primitives.ExecutionMessage]
      def putFailuresCount: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("putFailuresCount", putFailuresCountValue)
      def executionMessage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExecutionMessage] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionMessage", executionMessageValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ErrorInfo) extends ErrorInfo.ReadOnly {
      override def putFailuresCountValue: scala.Option[Long] = scala.Option(impl.putFailuresCount()).map(value => value: Long)
      override def executionMessageValue: scala.Option[primitives.ExecutionMessage] = scala.Option(impl.executionMessage()).map(value => value: primitives.ExecutionMessage)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ErrorInfo): ReadOnly = new Wrapper(impl)
  }
  case class EventBridgeDestinationProperties(`object`: primitives.Object, errorHandlingConfig: scala.Option[ErrorHandlingConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.EventBridgeDestinationProperties = {
      import EventBridgeDestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.EventBridgeDestinationProperties.builder().`object`(`object`: java.lang.String).optionallyWith(errorHandlingConfig.map(value => value.buildAwsValue()))(_.errorHandlingConfig).build()
    }
    def asReadOnly: EventBridgeDestinationProperties.ReadOnly = EventBridgeDestinationProperties.wrap(buildAwsValue())
  }
  object EventBridgeDestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.EventBridgeDestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EventBridgeDestinationProperties = EventBridgeDestinationProperties(objectValue, errorHandlingConfigValue.map(value => value.editable))
      def objectValue: primitives.Object
      def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly]
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
      def errorHandlingConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ErrorHandlingConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorHandlingConfig", errorHandlingConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.EventBridgeDestinationProperties) extends EventBridgeDestinationProperties.ReadOnly {
      override def objectValue: primitives.Object = impl.`object`(): primitives.Object
      override def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly] = scala.Option(impl.errorHandlingConfig()).map(value => ErrorHandlingConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.EventBridgeDestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class EventBridgeMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.EventBridgeMetadata = {
      import EventBridgeMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.EventBridgeMetadata.builder().build()
    }
    def asReadOnly: EventBridgeMetadata.ReadOnly = EventBridgeMetadata.wrap(buildAwsValue())
  }
  object EventBridgeMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.EventBridgeMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: EventBridgeMetadata = EventBridgeMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.EventBridgeMetadata) extends EventBridgeMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.EventBridgeMetadata): ReadOnly = new Wrapper(impl)
  }
  case class ExecutionDetails(mostRecentExecutionMessage: scala.Option[primitives.MostRecentExecutionMessage] = None, mostRecentExecutionTime: scala.Option[primitives.Date] = None, mostRecentExecutionStatus: scala.Option[ExecutionStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ExecutionDetails = {
      import ExecutionDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ExecutionDetails.builder().optionallyWith(mostRecentExecutionMessage.map(value => value: java.lang.String))(_.mostRecentExecutionMessage).optionallyWith(mostRecentExecutionTime.map(value => value: java.time.Instant))(_.mostRecentExecutionTime).optionallyWith(mostRecentExecutionStatus.map(value => value.unwrap))(_.mostRecentExecutionStatus).build()
    }
    def asReadOnly: ExecutionDetails.ReadOnly = ExecutionDetails.wrap(buildAwsValue())
  }
  object ExecutionDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ExecutionDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecutionDetails = ExecutionDetails(mostRecentExecutionMessageValue.map(value => value), mostRecentExecutionTimeValue.map(value => value), mostRecentExecutionStatusValue.map(value => value))
      def mostRecentExecutionMessageValue: scala.Option[primitives.MostRecentExecutionMessage]
      def mostRecentExecutionTimeValue: scala.Option[primitives.Date]
      def mostRecentExecutionStatusValue: scala.Option[ExecutionStatus]
      def mostRecentExecutionMessage: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MostRecentExecutionMessage] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("mostRecentExecutionMessage", mostRecentExecutionMessageValue)
      def mostRecentExecutionTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("mostRecentExecutionTime", mostRecentExecutionTimeValue)
      def mostRecentExecutionStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("mostRecentExecutionStatus", mostRecentExecutionStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ExecutionDetails) extends ExecutionDetails.ReadOnly {
      override def mostRecentExecutionMessageValue: scala.Option[primitives.MostRecentExecutionMessage] = scala.Option(impl.mostRecentExecutionMessage()).map(value => value: primitives.MostRecentExecutionMessage)
      override def mostRecentExecutionTimeValue: scala.Option[primitives.Date] = scala.Option(impl.mostRecentExecutionTime()).map(value => value: primitives.Date)
      override def mostRecentExecutionStatusValue: scala.Option[ExecutionStatus] = scala.Option(impl.mostRecentExecutionStatus()).map(value => ExecutionStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ExecutionDetails): ReadOnly = new Wrapper(impl)
  }
  case class ExecutionRecord(executionId: scala.Option[primitives.ExecutionId] = None, executionStatus: scala.Option[ExecutionStatus] = None, executionResult: scala.Option[ExecutionResult] = None, startedAt: scala.Option[primitives.Date] = None, lastUpdatedAt: scala.Option[primitives.Date] = None, dataPullStartTime: scala.Option[primitives.Date] = None, dataPullEndTime: scala.Option[primitives.Date] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ExecutionRecord = {
      import ExecutionRecord.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ExecutionRecord.builder().optionallyWith(executionId.map(value => value: java.lang.String))(_.executionId).optionallyWith(executionStatus.map(value => value.unwrap))(_.executionStatus).optionallyWith(executionResult.map(value => value.buildAwsValue()))(_.executionResult).optionallyWith(startedAt.map(value => value: java.time.Instant))(_.startedAt).optionallyWith(lastUpdatedAt.map(value => value: java.time.Instant))(_.lastUpdatedAt).optionallyWith(dataPullStartTime.map(value => value: java.time.Instant))(_.dataPullStartTime).optionallyWith(dataPullEndTime.map(value => value: java.time.Instant))(_.dataPullEndTime).build()
    }
    def asReadOnly: ExecutionRecord.ReadOnly = ExecutionRecord.wrap(buildAwsValue())
  }
  object ExecutionRecord {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ExecutionRecord] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecutionRecord = ExecutionRecord(executionIdValue.map(value => value), executionStatusValue.map(value => value), executionResultValue.map(value => value.editable), startedAtValue.map(value => value), lastUpdatedAtValue.map(value => value), dataPullStartTimeValue.map(value => value), dataPullEndTimeValue.map(value => value))
      def executionIdValue: scala.Option[primitives.ExecutionId]
      def executionStatusValue: scala.Option[ExecutionStatus]
      def executionResultValue: scala.Option[ExecutionResult.ReadOnly]
      def startedAtValue: scala.Option[primitives.Date]
      def lastUpdatedAtValue: scala.Option[primitives.Date]
      def dataPullStartTimeValue: scala.Option[primitives.Date]
      def dataPullEndTimeValue: scala.Option[primitives.Date]
      def executionId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExecutionId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionId", executionIdValue)
      def executionStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionStatus", executionStatusValue)
      def executionResult: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionResult.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionResult", executionResultValue)
      def startedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("startedAt", startedAtValue)
      def lastUpdatedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedAt", lastUpdatedAtValue)
      def dataPullStartTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dataPullStartTime", dataPullStartTimeValue)
      def dataPullEndTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dataPullEndTime", dataPullEndTimeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ExecutionRecord) extends ExecutionRecord.ReadOnly {
      override def executionIdValue: scala.Option[primitives.ExecutionId] = scala.Option(impl.executionId()).map(value => value: primitives.ExecutionId)
      override def executionStatusValue: scala.Option[ExecutionStatus] = scala.Option(impl.executionStatus()).map(value => ExecutionStatus.wrap(value))
      override def executionResultValue: scala.Option[ExecutionResult.ReadOnly] = scala.Option(impl.executionResult()).map(value => ExecutionResult.wrap(value))
      override def startedAtValue: scala.Option[primitives.Date] = scala.Option(impl.startedAt()).map(value => value: primitives.Date)
      override def lastUpdatedAtValue: scala.Option[primitives.Date] = scala.Option(impl.lastUpdatedAt()).map(value => value: primitives.Date)
      override def dataPullStartTimeValue: scala.Option[primitives.Date] = scala.Option(impl.dataPullStartTime()).map(value => value: primitives.Date)
      override def dataPullEndTimeValue: scala.Option[primitives.Date] = scala.Option(impl.dataPullEndTime()).map(value => value: primitives.Date)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ExecutionRecord): ReadOnly = new Wrapper(impl)
  }
  case class ExecutionResult(errorInfo: scala.Option[ErrorInfo] = None, bytesProcessed: scala.Option[Long] = None, bytesWritten: scala.Option[Long] = None, recordsProcessed: scala.Option[Long] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ExecutionResult = {
      import ExecutionResult.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ExecutionResult.builder().optionallyWith(errorInfo.map(value => value.buildAwsValue()))(_.errorInfo).optionallyWith(bytesProcessed.map(value => value: java.lang.Long))(_.bytesProcessed).optionallyWith(bytesWritten.map(value => value: java.lang.Long))(_.bytesWritten).optionallyWith(recordsProcessed.map(value => value: java.lang.Long))(_.recordsProcessed).build()
    }
    def asReadOnly: ExecutionResult.ReadOnly = ExecutionResult.wrap(buildAwsValue())
  }
  object ExecutionResult {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ExecutionResult] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ExecutionResult = ExecutionResult(errorInfoValue.map(value => value.editable), bytesProcessedValue.map(value => value), bytesWrittenValue.map(value => value), recordsProcessedValue.map(value => value))
      def errorInfoValue: scala.Option[ErrorInfo.ReadOnly]
      def bytesProcessedValue: scala.Option[Long]
      def bytesWrittenValue: scala.Option[Long]
      def recordsProcessedValue: scala.Option[Long]
      def errorInfo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ErrorInfo.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorInfo", errorInfoValue)
      def bytesProcessed: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bytesProcessed", bytesProcessedValue)
      def bytesWritten: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bytesWritten", bytesWrittenValue)
      def recordsProcessed: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Long] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("recordsProcessed", recordsProcessedValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ExecutionResult) extends ExecutionResult.ReadOnly {
      override def errorInfoValue: scala.Option[ErrorInfo.ReadOnly] = scala.Option(impl.errorInfo()).map(value => ErrorInfo.wrap(value))
      override def bytesProcessedValue: scala.Option[Long] = scala.Option(impl.bytesProcessed()).map(value => value: Long)
      override def bytesWrittenValue: scala.Option[Long] = scala.Option(impl.bytesWritten()).map(value => value: Long)
      override def recordsProcessedValue: scala.Option[Long] = scala.Option(impl.recordsProcessed()).map(value => value: Long)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ExecutionResult): ReadOnly = new Wrapper(impl)
  }
  sealed trait ExecutionStatus { def unwrap: software.amazon.awssdk.services.appflow.model.ExecutionStatus }
  object ExecutionStatus {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ExecutionStatus): ExecutionStatus = value match {
      case software.amazon.awssdk.services.appflow.model.ExecutionStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ExecutionStatus.IN_PROGRESS => InProgress
      case software.amazon.awssdk.services.appflow.model.ExecutionStatus.SUCCESSFUL => Successful
      case software.amazon.awssdk.services.appflow.model.ExecutionStatus.ERROR => Error
    }
    final case object unknownToSdkVersion extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.ExecutionStatus = software.amazon.awssdk.services.appflow.model.ExecutionStatus.UNKNOWN_TO_SDK_VERSION }
    final case object InProgress extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.ExecutionStatus = software.amazon.awssdk.services.appflow.model.ExecutionStatus.IN_PROGRESS }
    final case object Successful extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.ExecutionStatus = software.amazon.awssdk.services.appflow.model.ExecutionStatus.SUCCESSFUL }
    final case object Error extends ExecutionStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.ExecutionStatus = software.amazon.awssdk.services.appflow.model.ExecutionStatus.ERROR }
  }
  case class FieldTypeDetails(fieldType: primitives.FieldType, filterOperators: Iterable[Operator], supportedValues: scala.Option[Iterable[primitives.Value]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.FieldTypeDetails = {
      import FieldTypeDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.FieldTypeDetails.builder().fieldType(fieldType: java.lang.String).filterOperatorsWithStrings(filterOperators.map { item => 
        item.unwrap.toString
      }.asJavaCollection).optionallyWith(supportedValues.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.supportedValues).build()
    }
    def asReadOnly: FieldTypeDetails.ReadOnly = FieldTypeDetails.wrap(buildAwsValue())
  }
  object FieldTypeDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.FieldTypeDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: FieldTypeDetails = FieldTypeDetails(fieldTypeValue, filterOperatorsValue, supportedValuesValue.map(value => value))
      def fieldTypeValue: primitives.FieldType
      def filterOperatorsValue: List[Operator]
      def supportedValuesValue: scala.Option[List[primitives.Value]]
      def fieldType: ZIO[Any, Nothing, primitives.FieldType] = ZIO.succeed(fieldTypeValue)
      def filterOperators: ZIO[Any, Nothing, List[Operator]] = ZIO.succeed(filterOperatorsValue)
      def supportedValues: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Value]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedValues", supportedValuesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.FieldTypeDetails) extends FieldTypeDetails.ReadOnly {
      override def fieldTypeValue: primitives.FieldType = impl.fieldType(): primitives.FieldType
      override def filterOperatorsValue: List[Operator] = impl.filterOperators().asScala.map { item => 
        Operator.wrap(item)
      }.toList
      override def supportedValuesValue: scala.Option[List[primitives.Value]] = scala.Option(impl.supportedValues()).map(value => value.asScala.map { item => 
        item: primitives.Value
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.FieldTypeDetails): ReadOnly = new Wrapper(impl)
  }
  sealed trait FileType { def unwrap: software.amazon.awssdk.services.appflow.model.FileType }
  object FileType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.FileType): FileType = value match {
      case software.amazon.awssdk.services.appflow.model.FileType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.FileType.CSV => CSV
      case software.amazon.awssdk.services.appflow.model.FileType.JSON => JSON
      case software.amazon.awssdk.services.appflow.model.FileType.PARQUET => PARQUET
    }
    final case object unknownToSdkVersion extends FileType { override def unwrap: software.amazon.awssdk.services.appflow.model.FileType = software.amazon.awssdk.services.appflow.model.FileType.UNKNOWN_TO_SDK_VERSION }
    final case object CSV extends FileType { override def unwrap: software.amazon.awssdk.services.appflow.model.FileType = software.amazon.awssdk.services.appflow.model.FileType.CSV }
    final case object JSON extends FileType { override def unwrap: software.amazon.awssdk.services.appflow.model.FileType = software.amazon.awssdk.services.appflow.model.FileType.JSON }
    final case object PARQUET extends FileType { override def unwrap: software.amazon.awssdk.services.appflow.model.FileType = software.amazon.awssdk.services.appflow.model.FileType.PARQUET }
  }
  type FilterOperatorList = List[Operator]
  case class FlowDefinition(flowArn: scala.Option[primitives.FlowArn] = None, description: scala.Option[primitives.FlowDescription] = None, flowName: scala.Option[primitives.FlowName] = None, flowStatus: scala.Option[FlowStatus] = None, sourceConnectorType: scala.Option[ConnectorType] = None, destinationConnectorType: scala.Option[ConnectorType] = None, triggerType: scala.Option[TriggerType] = None, createdAt: scala.Option[primitives.Date] = None, lastUpdatedAt: scala.Option[primitives.Date] = None, createdBy: scala.Option[primitives.CreatedBy] = None, lastUpdatedBy: scala.Option[primitives.UpdatedBy] = None, tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None, lastRunExecutionDetails: scala.Option[ExecutionDetails] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.FlowDefinition = {
      import FlowDefinition.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.FlowDefinition.builder().optionallyWith(flowArn.map(value => value: java.lang.String))(_.flowArn).optionallyWith(description.map(value => value: java.lang.String))(_.description).optionallyWith(flowName.map(value => value: java.lang.String))(_.flowName).optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).optionallyWith(sourceConnectorType.map(value => value.unwrap))(_.sourceConnectorType).optionallyWith(destinationConnectorType.map(value => value.unwrap))(_.destinationConnectorType).optionallyWith(triggerType.map(value => value.unwrap))(_.triggerType).optionallyWith(createdAt.map(value => value: java.time.Instant))(_.createdAt).optionallyWith(lastUpdatedAt.map(value => value: java.time.Instant))(_.lastUpdatedAt).optionallyWith(createdBy.map(value => value: java.lang.String))(_.createdBy).optionallyWith(lastUpdatedBy.map(value => value: java.lang.String))(_.lastUpdatedBy).optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).optionallyWith(lastRunExecutionDetails.map(value => value.buildAwsValue()))(_.lastRunExecutionDetails).build()
    }
    def asReadOnly: FlowDefinition.ReadOnly = FlowDefinition.wrap(buildAwsValue())
  }
  object FlowDefinition {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.FlowDefinition] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: FlowDefinition = FlowDefinition(flowArnValue.map(value => value), descriptionValue.map(value => value), flowNameValue.map(value => value), flowStatusValue.map(value => value), sourceConnectorTypeValue.map(value => value), destinationConnectorTypeValue.map(value => value), triggerTypeValue.map(value => value), createdAtValue.map(value => value), lastUpdatedAtValue.map(value => value), createdByValue.map(value => value), lastUpdatedByValue.map(value => value), tagsValue.map(value => value), lastRunExecutionDetailsValue.map(value => value.editable))
      def flowArnValue: scala.Option[primitives.FlowArn]
      def descriptionValue: scala.Option[primitives.FlowDescription]
      def flowNameValue: scala.Option[primitives.FlowName]
      def flowStatusValue: scala.Option[FlowStatus]
      def sourceConnectorTypeValue: scala.Option[ConnectorType]
      def destinationConnectorTypeValue: scala.Option[ConnectorType]
      def triggerTypeValue: scala.Option[TriggerType]
      def createdAtValue: scala.Option[primitives.Date]
      def lastUpdatedAtValue: scala.Option[primitives.Date]
      def createdByValue: scala.Option[primitives.CreatedBy]
      def lastUpdatedByValue: scala.Option[primitives.UpdatedBy]
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def lastRunExecutionDetailsValue: scala.Option[ExecutionDetails.ReadOnly]
      def flowArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowArn", flowArnValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def flowName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowName", flowNameValue)
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
      def sourceConnectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceConnectorType", sourceConnectorTypeValue)
      def destinationConnectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationConnectorType", destinationConnectorTypeValue)
      def triggerType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TriggerType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("triggerType", triggerTypeValue)
      def createdAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdAt", createdAtValue)
      def lastUpdatedAt: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedAt", lastUpdatedAtValue)
      def createdBy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CreatedBy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdBy", createdByValue)
      def lastUpdatedBy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.UpdatedBy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastUpdatedBy", lastUpdatedByValue)
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TagKey, primitives.TagValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
      def lastRunExecutionDetails: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ExecutionDetails.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastRunExecutionDetails", lastRunExecutionDetailsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.FlowDefinition) extends FlowDefinition.ReadOnly {
      override def flowArnValue: scala.Option[primitives.FlowArn] = scala.Option(impl.flowArn()).map(value => value: primitives.FlowArn)
      override def descriptionValue: scala.Option[primitives.FlowDescription] = scala.Option(impl.description()).map(value => value: primitives.FlowDescription)
      override def flowNameValue: scala.Option[primitives.FlowName] = scala.Option(impl.flowName()).map(value => value: primitives.FlowName)
      override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value))
      override def sourceConnectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.sourceConnectorType()).map(value => ConnectorType.wrap(value))
      override def destinationConnectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.destinationConnectorType()).map(value => ConnectorType.wrap(value))
      override def triggerTypeValue: scala.Option[TriggerType] = scala.Option(impl.triggerType()).map(value => TriggerType.wrap(value))
      override def createdAtValue: scala.Option[primitives.Date] = scala.Option(impl.createdAt()).map(value => value: primitives.Date)
      override def lastUpdatedAtValue: scala.Option[primitives.Date] = scala.Option(impl.lastUpdatedAt()).map(value => value: primitives.Date)
      override def createdByValue: scala.Option[primitives.CreatedBy] = scala.Option(impl.createdBy()).map(value => value: primitives.CreatedBy)
      override def lastUpdatedByValue: scala.Option[primitives.UpdatedBy] = scala.Option(impl.lastUpdatedBy()).map(value => value: primitives.UpdatedBy)
      override def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = scala.Option(impl.tags()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TagKey) -> (value: primitives.TagValue)
      }).toMap)
      override def lastRunExecutionDetailsValue: scala.Option[ExecutionDetails.ReadOnly] = scala.Option(impl.lastRunExecutionDetails()).map(value => ExecutionDetails.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.FlowDefinition): ReadOnly = new Wrapper(impl)
  }
  type FlowExecutionList = List[ExecutionRecord]
  type FlowList = List[FlowDefinition]
  sealed trait FlowStatus { def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus }
  object FlowStatus {
    def wrap(value: software.amazon.awssdk.services.appflow.model.FlowStatus): FlowStatus = value match {
      case software.amazon.awssdk.services.appflow.model.FlowStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.FlowStatus.ACTIVE => Active
      case software.amazon.awssdk.services.appflow.model.FlowStatus.DEPRECATED => Deprecated
      case software.amazon.awssdk.services.appflow.model.FlowStatus.DELETED => Deleted
      case software.amazon.awssdk.services.appflow.model.FlowStatus.DRAFT => Draft
      case software.amazon.awssdk.services.appflow.model.FlowStatus.ERRORED => Errored
      case software.amazon.awssdk.services.appflow.model.FlowStatus.SUSPENDED => Suspended
    }
    final case object unknownToSdkVersion extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.UNKNOWN_TO_SDK_VERSION }
    final case object Active extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.ACTIVE }
    final case object Deprecated extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.DEPRECATED }
    final case object Deleted extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.DELETED }
    final case object Draft extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.DRAFT }
    final case object Errored extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.ERRORED }
    final case object Suspended extends FlowStatus { override def unwrap: software.amazon.awssdk.services.appflow.model.FlowStatus = software.amazon.awssdk.services.appflow.model.FlowStatus.SUSPENDED }
  }
  sealed trait GoogleAnalyticsConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator }
  object GoogleAnalyticsConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator): GoogleAnalyticsConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.BETWEEN => BETWEEN
    }
    final case object unknownToSdkVersion extends GoogleAnalyticsConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator = software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends GoogleAnalyticsConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator = software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.PROJECTION }
    final case object BETWEEN extends GoogleAnalyticsConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator = software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorOperator.BETWEEN }
  }
  case class GoogleAnalyticsConnectorProfileCredentials(clientId: primitives.ClientId, clientSecret: primitives.ClientSecret, accessToken: scala.Option[primitives.AccessToken] = None, refreshToken: scala.Option[primitives.RefreshToken] = None, oAuthRequest: scala.Option[ConnectorOAuthRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileCredentials = {
      import GoogleAnalyticsConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileCredentials.builder().clientId(clientId: java.lang.String).clientSecret(clientSecret: java.lang.String).optionallyWith(accessToken.map(value => value: java.lang.String))(_.accessToken).optionallyWith(refreshToken.map(value => value: java.lang.String))(_.refreshToken).optionallyWith(oAuthRequest.map(value => value.buildAwsValue()))(_.oAuthRequest).build()
    }
    def asReadOnly: GoogleAnalyticsConnectorProfileCredentials.ReadOnly = GoogleAnalyticsConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object GoogleAnalyticsConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GoogleAnalyticsConnectorProfileCredentials = GoogleAnalyticsConnectorProfileCredentials(clientIdValue, clientSecretValue, accessTokenValue.map(value => value), refreshTokenValue.map(value => value), oAuthRequestValue.map(value => value.editable))
      def clientIdValue: primitives.ClientId
      def clientSecretValue: primitives.ClientSecret
      def accessTokenValue: scala.Option[primitives.AccessToken]
      def refreshTokenValue: scala.Option[primitives.RefreshToken]
      def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly]
      def clientId: ZIO[Any, Nothing, primitives.ClientId] = ZIO.succeed(clientIdValue)
      def clientSecret: ZIO[Any, Nothing, primitives.ClientSecret] = ZIO.succeed(clientSecretValue)
      def accessToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccessToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessToken", accessTokenValue)
      def refreshToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RefreshToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("refreshToken", refreshTokenValue)
      def oAuthRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOAuthRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthRequest", oAuthRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileCredentials) extends GoogleAnalyticsConnectorProfileCredentials.ReadOnly {
      override def clientIdValue: primitives.ClientId = impl.clientId(): primitives.ClientId
      override def clientSecretValue: primitives.ClientSecret = impl.clientSecret(): primitives.ClientSecret
      override def accessTokenValue: scala.Option[primitives.AccessToken] = scala.Option(impl.accessToken()).map(value => value: primitives.AccessToken)
      override def refreshTokenValue: scala.Option[primitives.RefreshToken] = scala.Option(impl.refreshToken()).map(value => value: primitives.RefreshToken)
      override def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly] = scala.Option(impl.oAuthRequest()).map(value => ConnectorOAuthRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class GoogleAnalyticsConnectorProfileProperties() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileProperties = {
      import GoogleAnalyticsConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileProperties.builder().build()
    }
    def asReadOnly: GoogleAnalyticsConnectorProfileProperties.ReadOnly = GoogleAnalyticsConnectorProfileProperties.wrap(buildAwsValue())
  }
  object GoogleAnalyticsConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: GoogleAnalyticsConnectorProfileProperties = GoogleAnalyticsConnectorProfileProperties() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileProperties) extends GoogleAnalyticsConnectorProfileProperties.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class GoogleAnalyticsMetadata(oAuthScopes: scala.Option[Iterable[primitives.OAuthScope]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.GoogleAnalyticsMetadata = {
      import GoogleAnalyticsMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.GoogleAnalyticsMetadata.builder().optionallyWith(oAuthScopes.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.oAuthScopes).build()
    }
    def asReadOnly: GoogleAnalyticsMetadata.ReadOnly = GoogleAnalyticsMetadata.wrap(buildAwsValue())
  }
  object GoogleAnalyticsMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.GoogleAnalyticsMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GoogleAnalyticsMetadata = GoogleAnalyticsMetadata(oAuthScopesValue.map(value => value))
      def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]]
      def oAuthScopes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.OAuthScope]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthScopes", oAuthScopesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsMetadata) extends GoogleAnalyticsMetadata.ReadOnly {
      override def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]] = scala.Option(impl.oAuthScopes()).map(value => value.asScala.map { item => 
        item: primitives.OAuthScope
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsMetadata): ReadOnly = new Wrapper(impl)
  }
  case class GoogleAnalyticsSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.GoogleAnalyticsSourceProperties = {
      import GoogleAnalyticsSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.GoogleAnalyticsSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: GoogleAnalyticsSourceProperties.ReadOnly = GoogleAnalyticsSourceProperties.wrap(buildAwsValue())
  }
  object GoogleAnalyticsSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.GoogleAnalyticsSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: GoogleAnalyticsSourceProperties = GoogleAnalyticsSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsSourceProperties) extends GoogleAnalyticsSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.GoogleAnalyticsSourceProperties): ReadOnly = new Wrapper(impl)
  }
  type IdFieldNameList = List[primitives.Name]
  case class IncrementalPullConfig(datetimeTypeFieldName: scala.Option[primitives.DatetimeTypeFieldName] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.IncrementalPullConfig = {
      import IncrementalPullConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.IncrementalPullConfig.builder().optionallyWith(datetimeTypeFieldName.map(value => value: java.lang.String))(_.datetimeTypeFieldName).build()
    }
    def asReadOnly: IncrementalPullConfig.ReadOnly = IncrementalPullConfig.wrap(buildAwsValue())
  }
  object IncrementalPullConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.IncrementalPullConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: IncrementalPullConfig = IncrementalPullConfig(datetimeTypeFieldNameValue.map(value => value))
      def datetimeTypeFieldNameValue: scala.Option[primitives.DatetimeTypeFieldName]
      def datetimeTypeFieldName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DatetimeTypeFieldName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datetimeTypeFieldName", datetimeTypeFieldNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.IncrementalPullConfig) extends IncrementalPullConfig.ReadOnly { override def datetimeTypeFieldNameValue: scala.Option[primitives.DatetimeTypeFieldName] = scala.Option(impl.datetimeTypeFieldName()).map(value => value: primitives.DatetimeTypeFieldName) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.IncrementalPullConfig): ReadOnly = new Wrapper(impl)
  }
  sealed trait InforNexusConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator }
  object InforNexusConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator): InforNexusConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.PROJECTION }
    final case object BETWEEN extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.BETWEEN }
    final case object EQUAL_TO extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.EQUAL_TO }
    final case object ADDITION extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.DIVISION }
    final case object SUBTRACTION extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends InforNexusConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator = software.amazon.awssdk.services.appflow.model.InforNexusConnectorOperator.NO_OP }
  }
  case class InforNexusConnectorProfileCredentials(accessKeyId: primitives.AccessKeyId, userId: primitives.Username, secretAccessKey: primitives.Key, datakey: primitives.Key) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileCredentials = {
      import InforNexusConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileCredentials.builder().accessKeyId(accessKeyId: java.lang.String).userId(userId: java.lang.String).secretAccessKey(secretAccessKey: java.lang.String).datakey(datakey: java.lang.String).build()
    }
    def asReadOnly: InforNexusConnectorProfileCredentials.ReadOnly = InforNexusConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object InforNexusConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InforNexusConnectorProfileCredentials = InforNexusConnectorProfileCredentials(accessKeyIdValue, userIdValue, secretAccessKeyValue, datakeyValue)
      def accessKeyIdValue: primitives.AccessKeyId
      def userIdValue: primitives.Username
      def secretAccessKeyValue: primitives.Key
      def datakeyValue: primitives.Key
      def accessKeyId: ZIO[Any, Nothing, primitives.AccessKeyId] = ZIO.succeed(accessKeyIdValue)
      def userId: ZIO[Any, Nothing, primitives.Username] = ZIO.succeed(userIdValue)
      def secretAccessKey: ZIO[Any, Nothing, primitives.Key] = ZIO.succeed(secretAccessKeyValue)
      def datakey: ZIO[Any, Nothing, primitives.Key] = ZIO.succeed(datakeyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileCredentials) extends InforNexusConnectorProfileCredentials.ReadOnly {
      override def accessKeyIdValue: primitives.AccessKeyId = impl.accessKeyId(): primitives.AccessKeyId
      override def userIdValue: primitives.Username = impl.userId(): primitives.Username
      override def secretAccessKeyValue: primitives.Key = impl.secretAccessKey(): primitives.Key
      override def datakeyValue: primitives.Key = impl.datakey(): primitives.Key
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class InforNexusConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileProperties = {
      import InforNexusConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: InforNexusConnectorProfileProperties.ReadOnly = InforNexusConnectorProfileProperties.wrap(buildAwsValue())
  }
  object InforNexusConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InforNexusConnectorProfileProperties = InforNexusConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileProperties) extends InforNexusConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.InforNexusConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class InforNexusMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.InforNexusMetadata = {
      import InforNexusMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.InforNexusMetadata.builder().build()
    }
    def asReadOnly: InforNexusMetadata.ReadOnly = InforNexusMetadata.wrap(buildAwsValue())
  }
  object InforNexusMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.InforNexusMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: InforNexusMetadata = InforNexusMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.InforNexusMetadata) extends InforNexusMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.InforNexusMetadata): ReadOnly = new Wrapper(impl)
  }
  case class InforNexusSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.InforNexusSourceProperties = {
      import InforNexusSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.InforNexusSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: InforNexusSourceProperties.ReadOnly = InforNexusSourceProperties.wrap(buildAwsValue())
  }
  object InforNexusSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.InforNexusSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: InforNexusSourceProperties = InforNexusSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.InforNexusSourceProperties) extends InforNexusSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.InforNexusSourceProperties): ReadOnly = new Wrapper(impl)
  }
  case class ListConnectorEntitiesRequest(connectorProfileName: scala.Option[primitives.ConnectorProfileName] = None, connectorType: scala.Option[ConnectorType] = None, entitiesPath: scala.Option[primitives.EntitiesPath] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesRequest = {
      import ListConnectorEntitiesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesRequest.builder().optionallyWith(connectorProfileName.map(value => value: java.lang.String))(_.connectorProfileName).optionallyWith(connectorType.map(value => value.unwrap))(_.connectorType).optionallyWith(entitiesPath.map(value => value: java.lang.String))(_.entitiesPath).build()
    }
    def asReadOnly: ListConnectorEntitiesRequest.ReadOnly = ListConnectorEntitiesRequest.wrap(buildAwsValue())
  }
  object ListConnectorEntitiesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListConnectorEntitiesRequest = ListConnectorEntitiesRequest(connectorProfileNameValue.map(value => value), connectorTypeValue.map(value => value), entitiesPathValue.map(value => value))
      def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName]
      def connectorTypeValue: scala.Option[ConnectorType]
      def entitiesPathValue: scala.Option[primitives.EntitiesPath]
      def connectorProfileName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileName", connectorProfileNameValue)
      def connectorType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorType", connectorTypeValue)
      def entitiesPath: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EntitiesPath] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("entitiesPath", entitiesPathValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesRequest) extends ListConnectorEntitiesRequest.ReadOnly {
      override def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName] = scala.Option(impl.connectorProfileName()).map(value => value: primitives.ConnectorProfileName)
      override def connectorTypeValue: scala.Option[ConnectorType] = scala.Option(impl.connectorType()).map(value => ConnectorType.wrap(value))
      override def entitiesPathValue: scala.Option[primitives.EntitiesPath] = scala.Option(impl.entitiesPath()).map(value => value: primitives.EntitiesPath)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListConnectorEntitiesResponse(connectorEntityMap: Map[primitives.Group, Iterable[ConnectorEntity]]) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesResponse = {
      import ListConnectorEntitiesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesResponse.builder().connectorEntityMap(connectorEntityMap.map({
        case (key, value) =>
          (key: java.lang.String) -> value.map { item => 
            item.buildAwsValue()
          }.asJavaCollection
      }).asJava).build()
    }
    def asReadOnly: ListConnectorEntitiesResponse.ReadOnly = ListConnectorEntitiesResponse.wrap(buildAwsValue())
  }
  object ListConnectorEntitiesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListConnectorEntitiesResponse = ListConnectorEntitiesResponse(connectorEntityMapValue.map({
        case (key, value) =>
          key -> value.map { item => 
            item.editable
          }
      }))
      def connectorEntityMapValue: Map[primitives.Group, List[ConnectorEntity.ReadOnly]]
      def connectorEntityMap: ZIO[Any, Nothing, Map[primitives.Group, List[ConnectorEntity.ReadOnly]]] = ZIO.succeed(connectorEntityMapValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesResponse) extends ListConnectorEntitiesResponse.ReadOnly {
      override def connectorEntityMapValue: Map[primitives.Group, List[ConnectorEntity.ReadOnly]] = impl.connectorEntityMap().asScala.map({
        case (key, value) =>
          (key: primitives.Group) -> value.asScala.map { item => 
            ConnectorEntity.wrap(item)
          }.toList
      }).toMap
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListConnectorEntitiesResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListFlowsRequest(maxResults: scala.Option[primitives.MaxResults] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListFlowsRequest = {
      import ListFlowsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListFlowsRequest.builder().optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListFlowsRequest.ReadOnly = ListFlowsRequest.wrap(buildAwsValue())
  }
  object ListFlowsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListFlowsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListFlowsRequest = ListFlowsRequest(maxResultsValue.map(value => value), nextTokenValue.map(value => value))
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListFlowsRequest) extends ListFlowsRequest.ReadOnly {
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListFlowsRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListFlowsResponse(flows: scala.Option[Iterable[FlowDefinition]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListFlowsResponse = {
      import ListFlowsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListFlowsResponse.builder().optionallyWith(flows.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.flows).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListFlowsResponse.ReadOnly = ListFlowsResponse.wrap(buildAwsValue())
  }
  object ListFlowsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListFlowsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListFlowsResponse = ListFlowsResponse(flowsValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def flowsValue: scala.Option[List[FlowDefinition.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def flows: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[FlowDefinition.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flows", flowsValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListFlowsResponse) extends ListFlowsResponse.ReadOnly {
      override def flowsValue: scala.Option[List[FlowDefinition.ReadOnly]] = scala.Option(impl.flows()).map(value => value.asScala.map { item => 
        FlowDefinition.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListFlowsResponse): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsForResourceRequest(resourceArn: primitives.ARN) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListTagsForResourceRequest = {
      import ListTagsForResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListTagsForResourceRequest.builder().resourceArn(resourceArn: java.lang.String).build()
    }
    def asReadOnly: ListTagsForResourceRequest.ReadOnly = ListTagsForResourceRequest.wrap(buildAwsValue())
  }
  object ListTagsForResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListTagsForResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsForResourceRequest = ListTagsForResourceRequest(resourceArnValue)
      def resourceArnValue: primitives.ARN
      def resourceArn: ZIO[Any, Nothing, primitives.ARN] = ZIO.succeed(resourceArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListTagsForResourceRequest) extends ListTagsForResourceRequest.ReadOnly { override def resourceArnValue: primitives.ARN = impl.resourceArn(): primitives.ARN }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListTagsForResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class ListTagsForResourceResponse(tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ListTagsForResourceResponse = {
      import ListTagsForResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ListTagsForResourceResponse.builder().optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).build()
    }
    def asReadOnly: ListTagsForResourceResponse.ReadOnly = ListTagsForResourceResponse.wrap(buildAwsValue())
  }
  object ListTagsForResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ListTagsForResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsForResourceResponse = ListTagsForResourceResponse(tagsValue.map(value => value))
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def tags: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[primitives.TagKey, primitives.TagValue]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("tags", tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ListTagsForResourceResponse) extends ListTagsForResourceResponse.ReadOnly {
      override def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = scala.Option(impl.tags()).map(value => value.asScala.map({
        case (key, value) =>
          (key: primitives.TagKey) -> (value: primitives.TagValue)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ListTagsForResourceResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait MarketoConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator }
  object MarketoConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator): MarketoConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.PROJECTION }
    final case object LESS_THAN extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.LESS_THAN }
    final case object GREATER_THAN extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.GREATER_THAN }
    final case object BETWEEN extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.BETWEEN }
    final case object ADDITION extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.DIVISION }
    final case object SUBTRACTION extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends MarketoConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator = software.amazon.awssdk.services.appflow.model.MarketoConnectorOperator.NO_OP }
  }
  case class MarketoConnectorProfileCredentials(clientId: primitives.ClientId, clientSecret: primitives.ClientSecret, accessToken: scala.Option[primitives.AccessToken] = None, oAuthRequest: scala.Option[ConnectorOAuthRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileCredentials = {
      import MarketoConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileCredentials.builder().clientId(clientId: java.lang.String).clientSecret(clientSecret: java.lang.String).optionallyWith(accessToken.map(value => value: java.lang.String))(_.accessToken).optionallyWith(oAuthRequest.map(value => value.buildAwsValue()))(_.oAuthRequest).build()
    }
    def asReadOnly: MarketoConnectorProfileCredentials.ReadOnly = MarketoConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object MarketoConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MarketoConnectorProfileCredentials = MarketoConnectorProfileCredentials(clientIdValue, clientSecretValue, accessTokenValue.map(value => value), oAuthRequestValue.map(value => value.editable))
      def clientIdValue: primitives.ClientId
      def clientSecretValue: primitives.ClientSecret
      def accessTokenValue: scala.Option[primitives.AccessToken]
      def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly]
      def clientId: ZIO[Any, Nothing, primitives.ClientId] = ZIO.succeed(clientIdValue)
      def clientSecret: ZIO[Any, Nothing, primitives.ClientSecret] = ZIO.succeed(clientSecretValue)
      def accessToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccessToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessToken", accessTokenValue)
      def oAuthRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOAuthRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthRequest", oAuthRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileCredentials) extends MarketoConnectorProfileCredentials.ReadOnly {
      override def clientIdValue: primitives.ClientId = impl.clientId(): primitives.ClientId
      override def clientSecretValue: primitives.ClientSecret = impl.clientSecret(): primitives.ClientSecret
      override def accessTokenValue: scala.Option[primitives.AccessToken] = scala.Option(impl.accessToken()).map(value => value: primitives.AccessToken)
      override def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly] = scala.Option(impl.oAuthRequest()).map(value => ConnectorOAuthRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class MarketoConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileProperties = {
      import MarketoConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: MarketoConnectorProfileProperties.ReadOnly = MarketoConnectorProfileProperties.wrap(buildAwsValue())
  }
  object MarketoConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MarketoConnectorProfileProperties = MarketoConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileProperties) extends MarketoConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.MarketoConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class MarketoMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.MarketoMetadata = {
      import MarketoMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.MarketoMetadata.builder().build()
    }
    def asReadOnly: MarketoMetadata.ReadOnly = MarketoMetadata.wrap(buildAwsValue())
  }
  object MarketoMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.MarketoMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: MarketoMetadata = MarketoMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.MarketoMetadata) extends MarketoMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.MarketoMetadata): ReadOnly = new Wrapper(impl)
  }
  case class MarketoSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.MarketoSourceProperties = {
      import MarketoSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.MarketoSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: MarketoSourceProperties.ReadOnly = MarketoSourceProperties.wrap(buildAwsValue())
  }
  object MarketoSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.MarketoSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: MarketoSourceProperties = MarketoSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.MarketoSourceProperties) extends MarketoSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.MarketoSourceProperties): ReadOnly = new Wrapper(impl)
  }
  type OAuthScopeList = List[primitives.OAuthScope]
  sealed trait Operator { def unwrap: software.amazon.awssdk.services.appflow.model.Operator }
  object Operator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.Operator): Operator = value match {
      case software.amazon.awssdk.services.appflow.model.Operator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.Operator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.Operator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.Operator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.Operator.CONTAINS => CONTAINS
      case software.amazon.awssdk.services.appflow.model.Operator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.Operator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.Operator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.Operator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.Operator.NOT_EQUAL_TO => NOT_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.Operator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.Operator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.Operator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.Operator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.Operator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.Operator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.Operator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.Operator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.PROJECTION }
    final case object LESS_THAN extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.LESS_THAN }
    final case object GREATER_THAN extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.GREATER_THAN }
    final case object CONTAINS extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.CONTAINS }
    final case object BETWEEN extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.EQUAL_TO }
    final case object NOT_EQUAL_TO extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.NOT_EQUAL_TO }
    final case object ADDITION extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.ADDITION }
    final case object MULTIPLICATION extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.MULTIPLICATION }
    final case object DIVISION extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.DIVISION }
    final case object SUBTRACTION extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.SUBTRACTION }
    final case object MASK_ALL extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.MASK_ALL }
    final case object MASK_FIRST_N extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.MASK_FIRST_N }
    final case object MASK_LAST_N extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.VALIDATE_NUMERIC }
    final case object NO_OP extends Operator { override def unwrap: software.amazon.awssdk.services.appflow.model.Operator = software.amazon.awssdk.services.appflow.model.Operator.NO_OP }
  }
  sealed trait OperatorPropertiesKeys { def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys }
  object OperatorPropertiesKeys {
    def wrap(value: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys): OperatorPropertiesKeys = value match {
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALUE => VALUE
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALUES => VALUES
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.DATA_TYPE => DATA_TYPE
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.UPPER_BOUND => UPPER_BOUND
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.LOWER_BOUND => LOWER_BOUND
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.SOURCE_DATA_TYPE => SOURCE_DATA_TYPE
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.DESTINATION_DATA_TYPE => DESTINATION_DATA_TYPE
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALIDATION_ACTION => VALIDATION_ACTION
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MASK_VALUE => MASK_VALUE
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MASK_LENGTH => MASK_LENGTH
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.TRUNCATE_LENGTH => TRUNCATE_LENGTH
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MATH_OPERATION_FIELDS_ORDER => MATH_OPERATION_FIELDS_ORDER
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.CONCAT_FORMAT => CONCAT_FORMAT
      case software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.SUBFIELD_CATEGORY_MAP => SUBFIELD_CATEGORY_MAP
    }
    final case object unknownToSdkVersion extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.UNKNOWN_TO_SDK_VERSION }
    final case object VALUE extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALUE }
    final case object VALUES extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALUES }
    final case object DATA_TYPE extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.DATA_TYPE }
    final case object UPPER_BOUND extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.UPPER_BOUND }
    final case object LOWER_BOUND extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.LOWER_BOUND }
    final case object SOURCE_DATA_TYPE extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.SOURCE_DATA_TYPE }
    final case object DESTINATION_DATA_TYPE extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.DESTINATION_DATA_TYPE }
    final case object VALIDATION_ACTION extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.VALIDATION_ACTION }
    final case object MASK_VALUE extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MASK_VALUE }
    final case object MASK_LENGTH extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MASK_LENGTH }
    final case object TRUNCATE_LENGTH extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.TRUNCATE_LENGTH }
    final case object MATH_OPERATION_FIELDS_ORDER extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.MATH_OPERATION_FIELDS_ORDER }
    final case object CONCAT_FORMAT extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.CONCAT_FORMAT }
    final case object SUBFIELD_CATEGORY_MAP extends OperatorPropertiesKeys { override def unwrap: software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys = software.amazon.awssdk.services.appflow.model.OperatorPropertiesKeys.SUBFIELD_CATEGORY_MAP }
  }
  case class PrefixConfig(prefixType: scala.Option[PrefixType] = None, prefixFormat: scala.Option[PrefixFormat] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.PrefixConfig = {
      import PrefixConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.PrefixConfig.builder().optionallyWith(prefixType.map(value => value.unwrap))(_.prefixType).optionallyWith(prefixFormat.map(value => value.unwrap))(_.prefixFormat).build()
    }
    def asReadOnly: PrefixConfig.ReadOnly = PrefixConfig.wrap(buildAwsValue())
  }
  object PrefixConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.PrefixConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: PrefixConfig = PrefixConfig(prefixTypeValue.map(value => value), prefixFormatValue.map(value => value))
      def prefixTypeValue: scala.Option[PrefixType]
      def prefixFormatValue: scala.Option[PrefixFormat]
      def prefixType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PrefixType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("prefixType", prefixTypeValue)
      def prefixFormat: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PrefixFormat] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("prefixFormat", prefixFormatValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.PrefixConfig) extends PrefixConfig.ReadOnly {
      override def prefixTypeValue: scala.Option[PrefixType] = scala.Option(impl.prefixType()).map(value => PrefixType.wrap(value))
      override def prefixFormatValue: scala.Option[PrefixFormat] = scala.Option(impl.prefixFormat()).map(value => PrefixFormat.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.PrefixConfig): ReadOnly = new Wrapper(impl)
  }
  sealed trait PrefixFormat { def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat }
  object PrefixFormat {
    def wrap(value: software.amazon.awssdk.services.appflow.model.PrefixFormat): PrefixFormat = value match {
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.YEAR => YEAR
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.MONTH => MONTH
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.DAY => DAY
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.HOUR => HOUR
      case software.amazon.awssdk.services.appflow.model.PrefixFormat.MINUTE => MINUTE
    }
    final case object unknownToSdkVersion extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.UNKNOWN_TO_SDK_VERSION }
    final case object YEAR extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.YEAR }
    final case object MONTH extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.MONTH }
    final case object DAY extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.DAY }
    final case object HOUR extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.HOUR }
    final case object MINUTE extends PrefixFormat { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixFormat = software.amazon.awssdk.services.appflow.model.PrefixFormat.MINUTE }
  }
  sealed trait PrefixType { def unwrap: software.amazon.awssdk.services.appflow.model.PrefixType }
  object PrefixType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.PrefixType): PrefixType = value match {
      case software.amazon.awssdk.services.appflow.model.PrefixType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.PrefixType.FILENAME => FILENAME
      case software.amazon.awssdk.services.appflow.model.PrefixType.PATH => PATH
      case software.amazon.awssdk.services.appflow.model.PrefixType.PATH_AND_FILENAME => PATH_AND_FILENAME
    }
    final case object unknownToSdkVersion extends PrefixType { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixType = software.amazon.awssdk.services.appflow.model.PrefixType.UNKNOWN_TO_SDK_VERSION }
    final case object FILENAME extends PrefixType { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixType = software.amazon.awssdk.services.appflow.model.PrefixType.FILENAME }
    final case object PATH extends PrefixType { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixType = software.amazon.awssdk.services.appflow.model.PrefixType.PATH }
    final case object PATH_AND_FILENAME extends PrefixType { override def unwrap: software.amazon.awssdk.services.appflow.model.PrefixType = software.amazon.awssdk.services.appflow.model.PrefixType.PATH_AND_FILENAME }
  }
  case class RedshiftConnectorProfileCredentials(username: primitives.Username, password: primitives.Password) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileCredentials = {
      import RedshiftConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileCredentials.builder().username(username: java.lang.String).password(password: java.lang.String).build()
    }
    def asReadOnly: RedshiftConnectorProfileCredentials.ReadOnly = RedshiftConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object RedshiftConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RedshiftConnectorProfileCredentials = RedshiftConnectorProfileCredentials(usernameValue, passwordValue)
      def usernameValue: primitives.Username
      def passwordValue: primitives.Password
      def username: ZIO[Any, Nothing, primitives.Username] = ZIO.succeed(usernameValue)
      def password: ZIO[Any, Nothing, primitives.Password] = ZIO.succeed(passwordValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileCredentials) extends RedshiftConnectorProfileCredentials.ReadOnly {
      override def usernameValue: primitives.Username = impl.username(): primitives.Username
      override def passwordValue: primitives.Password = impl.password(): primitives.Password
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class RedshiftConnectorProfileProperties(databaseUrl: primitives.DatabaseUrl, bucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, roleArn: primitives.RoleArn) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileProperties = {
      import RedshiftConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileProperties.builder().databaseUrl(databaseUrl: java.lang.String).bucketName(bucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).roleArn(roleArn: java.lang.String).build()
    }
    def asReadOnly: RedshiftConnectorProfileProperties.ReadOnly = RedshiftConnectorProfileProperties.wrap(buildAwsValue())
  }
  object RedshiftConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RedshiftConnectorProfileProperties = RedshiftConnectorProfileProperties(databaseUrlValue, bucketNameValue, bucketPrefixValue.map(value => value), roleArnValue)
      def databaseUrlValue: primitives.DatabaseUrl
      def bucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def roleArnValue: primitives.RoleArn
      def databaseUrl: ZIO[Any, Nothing, primitives.DatabaseUrl] = ZIO.succeed(databaseUrlValue)
      def bucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(bucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def roleArn: ZIO[Any, Nothing, primitives.RoleArn] = ZIO.succeed(roleArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileProperties) extends RedshiftConnectorProfileProperties.ReadOnly {
      override def databaseUrlValue: primitives.DatabaseUrl = impl.databaseUrl(): primitives.DatabaseUrl
      override def bucketNameValue: primitives.BucketName = impl.bucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def roleArnValue: primitives.RoleArn = impl.roleArn(): primitives.RoleArn
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.RedshiftConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class RedshiftDestinationProperties(`object`: primitives.Object, intermediateBucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, errorHandlingConfig: scala.Option[ErrorHandlingConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.RedshiftDestinationProperties = {
      import RedshiftDestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.RedshiftDestinationProperties.builder().`object`(`object`: java.lang.String).intermediateBucketName(intermediateBucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).optionallyWith(errorHandlingConfig.map(value => value.buildAwsValue()))(_.errorHandlingConfig).build()
    }
    def asReadOnly: RedshiftDestinationProperties.ReadOnly = RedshiftDestinationProperties.wrap(buildAwsValue())
  }
  object RedshiftDestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.RedshiftDestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: RedshiftDestinationProperties = RedshiftDestinationProperties(objectValue, intermediateBucketNameValue, bucketPrefixValue.map(value => value), errorHandlingConfigValue.map(value => value.editable))
      def objectValue: primitives.Object
      def intermediateBucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly]
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
      def intermediateBucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(intermediateBucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def errorHandlingConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ErrorHandlingConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorHandlingConfig", errorHandlingConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.RedshiftDestinationProperties) extends RedshiftDestinationProperties.ReadOnly {
      override def objectValue: primitives.Object = impl.`object`(): primitives.Object
      override def intermediateBucketNameValue: primitives.BucketName = impl.intermediateBucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly] = scala.Option(impl.errorHandlingConfig()).map(value => ErrorHandlingConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.RedshiftDestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class RedshiftMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.RedshiftMetadata = {
      import RedshiftMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.RedshiftMetadata.builder().build()
    }
    def asReadOnly: RedshiftMetadata.ReadOnly = RedshiftMetadata.wrap(buildAwsValue())
  }
  object RedshiftMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.RedshiftMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: RedshiftMetadata = RedshiftMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.RedshiftMetadata) extends RedshiftMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.RedshiftMetadata): ReadOnly = new Wrapper(impl)
  }
  type RegionList = List[primitives.Region]
  sealed trait S3ConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator }
  object S3ConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator): S3ConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.NOT_EQUAL_TO => NOT_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.PROJECTION }
    final case object LESS_THAN extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.LESS_THAN }
    final case object GREATER_THAN extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.GREATER_THAN }
    final case object BETWEEN extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.EQUAL_TO }
    final case object NOT_EQUAL_TO extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.NOT_EQUAL_TO }
    final case object ADDITION extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.DIVISION }
    final case object SUBTRACTION extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends S3ConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.S3ConnectorOperator = software.amazon.awssdk.services.appflow.model.S3ConnectorOperator.NO_OP }
  }
  case class S3DestinationProperties(bucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, s3OutputFormatConfig: scala.Option[S3OutputFormatConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.S3DestinationProperties = {
      import S3DestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.S3DestinationProperties.builder().bucketName(bucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).optionallyWith(s3OutputFormatConfig.map(value => value.buildAwsValue()))(_.s3OutputFormatConfig).build()
    }
    def asReadOnly: S3DestinationProperties.ReadOnly = S3DestinationProperties.wrap(buildAwsValue())
  }
  object S3DestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.S3DestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: S3DestinationProperties = S3DestinationProperties(bucketNameValue, bucketPrefixValue.map(value => value), s3OutputFormatConfigValue.map(value => value.editable))
      def bucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def s3OutputFormatConfigValue: scala.Option[S3OutputFormatConfig.ReadOnly]
      def bucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(bucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def s3OutputFormatConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3OutputFormatConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3OutputFormatConfig", s3OutputFormatConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.S3DestinationProperties) extends S3DestinationProperties.ReadOnly {
      override def bucketNameValue: primitives.BucketName = impl.bucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def s3OutputFormatConfigValue: scala.Option[S3OutputFormatConfig.ReadOnly] = scala.Option(impl.s3OutputFormatConfig()).map(value => S3OutputFormatConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.S3DestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class S3Metadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.S3Metadata = {
      import S3Metadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.S3Metadata.builder().build()
    }
    def asReadOnly: S3Metadata.ReadOnly = S3Metadata.wrap(buildAwsValue())
  }
  object S3Metadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.S3Metadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: S3Metadata = S3Metadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.S3Metadata) extends S3Metadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.S3Metadata): ReadOnly = new Wrapper(impl)
  }
  case class S3OutputFormatConfig(fileType: scala.Option[FileType] = None, prefixConfig: scala.Option[PrefixConfig] = None, aggregationConfig: scala.Option[AggregationConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.S3OutputFormatConfig = {
      import S3OutputFormatConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.S3OutputFormatConfig.builder().optionallyWith(fileType.map(value => value.unwrap))(_.fileType).optionallyWith(prefixConfig.map(value => value.buildAwsValue()))(_.prefixConfig).optionallyWith(aggregationConfig.map(value => value.buildAwsValue()))(_.aggregationConfig).build()
    }
    def asReadOnly: S3OutputFormatConfig.ReadOnly = S3OutputFormatConfig.wrap(buildAwsValue())
  }
  object S3OutputFormatConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.S3OutputFormatConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: S3OutputFormatConfig = S3OutputFormatConfig(fileTypeValue.map(value => value), prefixConfigValue.map(value => value.editable), aggregationConfigValue.map(value => value.editable))
      def fileTypeValue: scala.Option[FileType]
      def prefixConfigValue: scala.Option[PrefixConfig.ReadOnly]
      def aggregationConfigValue: scala.Option[AggregationConfig.ReadOnly]
      def fileType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FileType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fileType", fileTypeValue)
      def prefixConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, PrefixConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("prefixConfig", prefixConfigValue)
      def aggregationConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AggregationConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("aggregationConfig", aggregationConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.S3OutputFormatConfig) extends S3OutputFormatConfig.ReadOnly {
      override def fileTypeValue: scala.Option[FileType] = scala.Option(impl.fileType()).map(value => FileType.wrap(value))
      override def prefixConfigValue: scala.Option[PrefixConfig.ReadOnly] = scala.Option(impl.prefixConfig()).map(value => PrefixConfig.wrap(value))
      override def aggregationConfigValue: scala.Option[AggregationConfig.ReadOnly] = scala.Option(impl.aggregationConfig()).map(value => AggregationConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.S3OutputFormatConfig): ReadOnly = new Wrapper(impl)
  }
  case class S3SourceProperties(bucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.S3SourceProperties = {
      import S3SourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.S3SourceProperties.builder().bucketName(bucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).build()
    }
    def asReadOnly: S3SourceProperties.ReadOnly = S3SourceProperties.wrap(buildAwsValue())
  }
  object S3SourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.S3SourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: S3SourceProperties = S3SourceProperties(bucketNameValue, bucketPrefixValue.map(value => value))
      def bucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def bucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(bucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.S3SourceProperties) extends S3SourceProperties.ReadOnly {
      override def bucketNameValue: primitives.BucketName = impl.bucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.S3SourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait SalesforceConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator }
  object SalesforceConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator): SalesforceConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.CONTAINS => CONTAINS
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.NOT_EQUAL_TO => NOT_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.PROJECTION }
    final case object LESS_THAN extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.LESS_THAN }
    final case object CONTAINS extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.CONTAINS }
    final case object GREATER_THAN extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.GREATER_THAN }
    final case object BETWEEN extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.EQUAL_TO }
    final case object NOT_EQUAL_TO extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.NOT_EQUAL_TO }
    final case object ADDITION extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.DIVISION }
    final case object SUBTRACTION extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends SalesforceConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator = software.amazon.awssdk.services.appflow.model.SalesforceConnectorOperator.NO_OP }
  }
  case class SalesforceConnectorProfileCredentials(accessToken: scala.Option[primitives.AccessToken] = None, refreshToken: scala.Option[primitives.RefreshToken] = None, oAuthRequest: scala.Option[ConnectorOAuthRequest] = None, clientCredentialsArn: scala.Option[primitives.ClientCredentialsArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileCredentials = {
      import SalesforceConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileCredentials.builder().optionallyWith(accessToken.map(value => value: java.lang.String))(_.accessToken).optionallyWith(refreshToken.map(value => value: java.lang.String))(_.refreshToken).optionallyWith(oAuthRequest.map(value => value.buildAwsValue()))(_.oAuthRequest).optionallyWith(clientCredentialsArn.map(value => value: java.lang.String))(_.clientCredentialsArn).build()
    }
    def asReadOnly: SalesforceConnectorProfileCredentials.ReadOnly = SalesforceConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object SalesforceConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SalesforceConnectorProfileCredentials = SalesforceConnectorProfileCredentials(accessTokenValue.map(value => value), refreshTokenValue.map(value => value), oAuthRequestValue.map(value => value.editable), clientCredentialsArnValue.map(value => value))
      def accessTokenValue: scala.Option[primitives.AccessToken]
      def refreshTokenValue: scala.Option[primitives.RefreshToken]
      def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly]
      def clientCredentialsArnValue: scala.Option[primitives.ClientCredentialsArn]
      def accessToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccessToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessToken", accessTokenValue)
      def refreshToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.RefreshToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("refreshToken", refreshTokenValue)
      def oAuthRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOAuthRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthRequest", oAuthRequestValue)
      def clientCredentialsArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientCredentialsArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientCredentialsArn", clientCredentialsArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileCredentials) extends SalesforceConnectorProfileCredentials.ReadOnly {
      override def accessTokenValue: scala.Option[primitives.AccessToken] = scala.Option(impl.accessToken()).map(value => value: primitives.AccessToken)
      override def refreshTokenValue: scala.Option[primitives.RefreshToken] = scala.Option(impl.refreshToken()).map(value => value: primitives.RefreshToken)
      override def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly] = scala.Option(impl.oAuthRequest()).map(value => ConnectorOAuthRequest.wrap(value))
      override def clientCredentialsArnValue: scala.Option[primitives.ClientCredentialsArn] = scala.Option(impl.clientCredentialsArn()).map(value => value: primitives.ClientCredentialsArn)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class SalesforceConnectorProfileProperties(instanceUrl: scala.Option[primitives.InstanceUrl] = None, isSandboxEnvironment: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileProperties = {
      import SalesforceConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileProperties.builder().optionallyWith(instanceUrl.map(value => value: java.lang.String))(_.instanceUrl).optionallyWith(isSandboxEnvironment.map(value => value: java.lang.Boolean))(_.isSandboxEnvironment).build()
    }
    def asReadOnly: SalesforceConnectorProfileProperties.ReadOnly = SalesforceConnectorProfileProperties.wrap(buildAwsValue())
  }
  object SalesforceConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SalesforceConnectorProfileProperties = SalesforceConnectorProfileProperties(instanceUrlValue.map(value => value), isSandboxEnvironmentValue.map(value => value))
      def instanceUrlValue: scala.Option[primitives.InstanceUrl]
      def isSandboxEnvironmentValue: scala.Option[Boolean]
      def instanceUrl: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.InstanceUrl] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("instanceUrl", instanceUrlValue)
      def isSandboxEnvironment: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isSandboxEnvironment", isSandboxEnvironmentValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileProperties) extends SalesforceConnectorProfileProperties.ReadOnly {
      override def instanceUrlValue: scala.Option[primitives.InstanceUrl] = scala.Option(impl.instanceUrl()).map(value => value: primitives.InstanceUrl)
      override def isSandboxEnvironmentValue: scala.Option[Boolean] = scala.Option(impl.isSandboxEnvironment()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SalesforceConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class SalesforceDestinationProperties(`object`: primitives.Object, idFieldNames: scala.Option[Iterable[primitives.Name]] = None, errorHandlingConfig: scala.Option[ErrorHandlingConfig] = None, writeOperationType: scala.Option[WriteOperationType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SalesforceDestinationProperties = {
      import SalesforceDestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SalesforceDestinationProperties.builder().`object`(`object`: java.lang.String).optionallyWith(idFieldNames.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.idFieldNames).optionallyWith(errorHandlingConfig.map(value => value.buildAwsValue()))(_.errorHandlingConfig).optionallyWith(writeOperationType.map(value => value.unwrap))(_.writeOperationType).build()
    }
    def asReadOnly: SalesforceDestinationProperties.ReadOnly = SalesforceDestinationProperties.wrap(buildAwsValue())
  }
  object SalesforceDestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SalesforceDestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SalesforceDestinationProperties = SalesforceDestinationProperties(objectValue, idFieldNamesValue.map(value => value), errorHandlingConfigValue.map(value => value.editable), writeOperationTypeValue.map(value => value))
      def objectValue: primitives.Object
      def idFieldNamesValue: scala.Option[List[primitives.Name]]
      def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly]
      def writeOperationTypeValue: scala.Option[WriteOperationType]
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
      def idFieldNames: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Name]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("idFieldNames", idFieldNamesValue)
      def errorHandlingConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ErrorHandlingConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorHandlingConfig", errorHandlingConfigValue)
      def writeOperationType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, WriteOperationType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("writeOperationType", writeOperationTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SalesforceDestinationProperties) extends SalesforceDestinationProperties.ReadOnly {
      override def objectValue: primitives.Object = impl.`object`(): primitives.Object
      override def idFieldNamesValue: scala.Option[List[primitives.Name]] = scala.Option(impl.idFieldNames()).map(value => value.asScala.map { item => 
        item: primitives.Name
      }.toList)
      override def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly] = scala.Option(impl.errorHandlingConfig()).map(value => ErrorHandlingConfig.wrap(value))
      override def writeOperationTypeValue: scala.Option[WriteOperationType] = scala.Option(impl.writeOperationType()).map(value => WriteOperationType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SalesforceDestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class SalesforceMetadata(oAuthScopes: scala.Option[Iterable[primitives.OAuthScope]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SalesforceMetadata = {
      import SalesforceMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SalesforceMetadata.builder().optionallyWith(oAuthScopes.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.oAuthScopes).build()
    }
    def asReadOnly: SalesforceMetadata.ReadOnly = SalesforceMetadata.wrap(buildAwsValue())
  }
  object SalesforceMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SalesforceMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SalesforceMetadata = SalesforceMetadata(oAuthScopesValue.map(value => value))
      def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]]
      def oAuthScopes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.OAuthScope]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthScopes", oAuthScopesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SalesforceMetadata) extends SalesforceMetadata.ReadOnly {
      override def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]] = scala.Option(impl.oAuthScopes()).map(value => value.asScala.map { item => 
        item: primitives.OAuthScope
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SalesforceMetadata): ReadOnly = new Wrapper(impl)
  }
  case class SalesforceSourceProperties(`object`: primitives.Object, enableDynamicFieldUpdate: scala.Option[Boolean] = None, includeDeletedRecords: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SalesforceSourceProperties = {
      import SalesforceSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SalesforceSourceProperties.builder().`object`(`object`: java.lang.String).optionallyWith(enableDynamicFieldUpdate.map(value => value: java.lang.Boolean))(_.enableDynamicFieldUpdate).optionallyWith(includeDeletedRecords.map(value => value: java.lang.Boolean))(_.includeDeletedRecords).build()
    }
    def asReadOnly: SalesforceSourceProperties.ReadOnly = SalesforceSourceProperties.wrap(buildAwsValue())
  }
  object SalesforceSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SalesforceSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SalesforceSourceProperties = SalesforceSourceProperties(objectValue, enableDynamicFieldUpdateValue.map(value => value), includeDeletedRecordsValue.map(value => value))
      def objectValue: primitives.Object
      def enableDynamicFieldUpdateValue: scala.Option[Boolean]
      def includeDeletedRecordsValue: scala.Option[Boolean]
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
      def enableDynamicFieldUpdate: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("enableDynamicFieldUpdate", enableDynamicFieldUpdateValue)
      def includeDeletedRecords: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("includeDeletedRecords", includeDeletedRecordsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SalesforceSourceProperties) extends SalesforceSourceProperties.ReadOnly {
      override def objectValue: primitives.Object = impl.`object`(): primitives.Object
      override def enableDynamicFieldUpdateValue: scala.Option[Boolean] = scala.Option(impl.enableDynamicFieldUpdate()).map(value => value: Boolean)
      override def includeDeletedRecordsValue: scala.Option[Boolean] = scala.Option(impl.includeDeletedRecords()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SalesforceSourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait ScheduleFrequencyType { def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType }
  object ScheduleFrequencyType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType): ScheduleFrequencyType = value match {
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.BYMINUTE => BYMINUTE
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.HOURLY => HOURLY
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.DAILY => DAILY
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.WEEKLY => WEEKLY
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.MONTHLY => MONTHLY
      case software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.ONCE => ONCE
    }
    final case object unknownToSdkVersion extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.UNKNOWN_TO_SDK_VERSION }
    final case object BYMINUTE extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.BYMINUTE }
    final case object HOURLY extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.HOURLY }
    final case object DAILY extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.DAILY }
    final case object WEEKLY extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.WEEKLY }
    final case object MONTHLY extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.MONTHLY }
    final case object ONCE extends ScheduleFrequencyType { override def unwrap: software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType = software.amazon.awssdk.services.appflow.model.ScheduleFrequencyType.ONCE }
  }
  case class ScheduledTriggerProperties(scheduleExpression: primitives.ScheduleExpression, dataPullMode: scala.Option[DataPullMode] = None, scheduleStartTime: scala.Option[primitives.Date] = None, scheduleEndTime: scala.Option[primitives.Date] = None, timezone: scala.Option[primitives.Timezone] = None, scheduleOffset: scala.Option[primitives.ScheduleOffset] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ScheduledTriggerProperties = {
      import ScheduledTriggerProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ScheduledTriggerProperties.builder().scheduleExpression(scheduleExpression: java.lang.String).optionallyWith(dataPullMode.map(value => value.unwrap))(_.dataPullMode).optionallyWith(scheduleStartTime.map(value => value: java.time.Instant))(_.scheduleStartTime).optionallyWith(scheduleEndTime.map(value => value: java.time.Instant))(_.scheduleEndTime).optionallyWith(timezone.map(value => value: java.lang.String))(_.timezone).optionallyWith(scheduleOffset.map(value => value: java.lang.Long))(_.scheduleOffset).build()
    }
    def asReadOnly: ScheduledTriggerProperties.ReadOnly = ScheduledTriggerProperties.wrap(buildAwsValue())
  }
  object ScheduledTriggerProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ScheduledTriggerProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ScheduledTriggerProperties = ScheduledTriggerProperties(scheduleExpressionValue, dataPullModeValue.map(value => value), scheduleStartTimeValue.map(value => value), scheduleEndTimeValue.map(value => value), timezoneValue.map(value => value), scheduleOffsetValue.map(value => value))
      def scheduleExpressionValue: primitives.ScheduleExpression
      def dataPullModeValue: scala.Option[DataPullMode]
      def scheduleStartTimeValue: scala.Option[primitives.Date]
      def scheduleEndTimeValue: scala.Option[primitives.Date]
      def timezoneValue: scala.Option[primitives.Timezone]
      def scheduleOffsetValue: scala.Option[primitives.ScheduleOffset]
      def scheduleExpression: ZIO[Any, Nothing, primitives.ScheduleExpression] = ZIO.succeed(scheduleExpressionValue)
      def dataPullMode: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DataPullMode] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dataPullMode", dataPullModeValue)
      def scheduleStartTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleStartTime", scheduleStartTimeValue)
      def scheduleEndTime: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Date] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleEndTime", scheduleEndTimeValue)
      def timezone: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Timezone] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("timezone", timezoneValue)
      def scheduleOffset: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ScheduleOffset] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduleOffset", scheduleOffsetValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ScheduledTriggerProperties) extends ScheduledTriggerProperties.ReadOnly {
      override def scheduleExpressionValue: primitives.ScheduleExpression = impl.scheduleExpression(): primitives.ScheduleExpression
      override def dataPullModeValue: scala.Option[DataPullMode] = scala.Option(impl.dataPullMode()).map(value => DataPullMode.wrap(value))
      override def scheduleStartTimeValue: scala.Option[primitives.Date] = scala.Option(impl.scheduleStartTime()).map(value => value: primitives.Date)
      override def scheduleEndTimeValue: scala.Option[primitives.Date] = scala.Option(impl.scheduleEndTime()).map(value => value: primitives.Date)
      override def timezoneValue: scala.Option[primitives.Timezone] = scala.Option(impl.timezone()).map(value => value: primitives.Timezone)
      override def scheduleOffsetValue: scala.Option[primitives.ScheduleOffset] = scala.Option(impl.scheduleOffset()).map(value => value: primitives.ScheduleOffset)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ScheduledTriggerProperties): ReadOnly = new Wrapper(impl)
  }
  type SchedulingFrequencyTypeList = List[ScheduleFrequencyType]
  sealed trait ServiceNowConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator }
  object ServiceNowConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator): ServiceNowConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.CONTAINS => CONTAINS
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.NOT_EQUAL_TO => NOT_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.PROJECTION }
    final case object CONTAINS extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.CONTAINS }
    final case object LESS_THAN extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.LESS_THAN }
    final case object GREATER_THAN extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.GREATER_THAN }
    final case object BETWEEN extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.EQUAL_TO }
    final case object NOT_EQUAL_TO extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.NOT_EQUAL_TO }
    final case object ADDITION extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.DIVISION }
    final case object SUBTRACTION extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends ServiceNowConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator = software.amazon.awssdk.services.appflow.model.ServiceNowConnectorOperator.NO_OP }
  }
  case class ServiceNowConnectorProfileCredentials(username: primitives.Username, password: primitives.Password) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileCredentials = {
      import ServiceNowConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileCredentials.builder().username(username: java.lang.String).password(password: java.lang.String).build()
    }
    def asReadOnly: ServiceNowConnectorProfileCredentials.ReadOnly = ServiceNowConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object ServiceNowConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ServiceNowConnectorProfileCredentials = ServiceNowConnectorProfileCredentials(usernameValue, passwordValue)
      def usernameValue: primitives.Username
      def passwordValue: primitives.Password
      def username: ZIO[Any, Nothing, primitives.Username] = ZIO.succeed(usernameValue)
      def password: ZIO[Any, Nothing, primitives.Password] = ZIO.succeed(passwordValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileCredentials) extends ServiceNowConnectorProfileCredentials.ReadOnly {
      override def usernameValue: primitives.Username = impl.username(): primitives.Username
      override def passwordValue: primitives.Password = impl.password(): primitives.Password
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class ServiceNowConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileProperties = {
      import ServiceNowConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: ServiceNowConnectorProfileProperties.ReadOnly = ServiceNowConnectorProfileProperties.wrap(buildAwsValue())
  }
  object ServiceNowConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ServiceNowConnectorProfileProperties = ServiceNowConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileProperties) extends ServiceNowConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ServiceNowConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class ServiceNowMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ServiceNowMetadata = {
      import ServiceNowMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ServiceNowMetadata.builder().build()
    }
    def asReadOnly: ServiceNowMetadata.ReadOnly = ServiceNowMetadata.wrap(buildAwsValue())
  }
  object ServiceNowMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ServiceNowMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: ServiceNowMetadata = ServiceNowMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ServiceNowMetadata) extends ServiceNowMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ServiceNowMetadata): ReadOnly = new Wrapper(impl)
  }
  case class ServiceNowSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ServiceNowSourceProperties = {
      import ServiceNowSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ServiceNowSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: ServiceNowSourceProperties.ReadOnly = ServiceNowSourceProperties.wrap(buildAwsValue())
  }
  object ServiceNowSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ServiceNowSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ServiceNowSourceProperties = ServiceNowSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ServiceNowSourceProperties) extends ServiceNowSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ServiceNowSourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait SingularConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator }
  object SingularConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator): SingularConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.PROJECTION }
    final case object EQUAL_TO extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.EQUAL_TO }
    final case object ADDITION extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.DIVISION }
    final case object SUBTRACTION extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends SingularConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SingularConnectorOperator = software.amazon.awssdk.services.appflow.model.SingularConnectorOperator.NO_OP }
  }
  case class SingularConnectorProfileCredentials(apiKey: primitives.ApiKey) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SingularConnectorProfileCredentials = {
      import SingularConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SingularConnectorProfileCredentials.builder().apiKey(apiKey: java.lang.String).build()
    }
    def asReadOnly: SingularConnectorProfileCredentials.ReadOnly = SingularConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object SingularConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SingularConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SingularConnectorProfileCredentials = SingularConnectorProfileCredentials(apiKeyValue)
      def apiKeyValue: primitives.ApiKey
      def apiKey: ZIO[Any, Nothing, primitives.ApiKey] = ZIO.succeed(apiKeyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SingularConnectorProfileCredentials) extends SingularConnectorProfileCredentials.ReadOnly { override def apiKeyValue: primitives.ApiKey = impl.apiKey(): primitives.ApiKey }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SingularConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class SingularConnectorProfileProperties() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SingularConnectorProfileProperties = {
      import SingularConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SingularConnectorProfileProperties.builder().build()
    }
    def asReadOnly: SingularConnectorProfileProperties.ReadOnly = SingularConnectorProfileProperties.wrap(buildAwsValue())
  }
  object SingularConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SingularConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: SingularConnectorProfileProperties = SingularConnectorProfileProperties() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SingularConnectorProfileProperties) extends SingularConnectorProfileProperties.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SingularConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class SingularMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SingularMetadata = {
      import SingularMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SingularMetadata.builder().build()
    }
    def asReadOnly: SingularMetadata.ReadOnly = SingularMetadata.wrap(buildAwsValue())
  }
  object SingularMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SingularMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: SingularMetadata = SingularMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SingularMetadata) extends SingularMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SingularMetadata): ReadOnly = new Wrapper(impl)
  }
  case class SingularSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SingularSourceProperties = {
      import SingularSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SingularSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: SingularSourceProperties.ReadOnly = SingularSourceProperties.wrap(buildAwsValue())
  }
  object SingularSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SingularSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SingularSourceProperties = SingularSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SingularSourceProperties) extends SingularSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SingularSourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait SlackConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator }
  object SlackConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator): SlackConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.PROJECTION }
    final case object LESS_THAN extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.LESS_THAN }
    final case object GREATER_THAN extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.GREATER_THAN }
    final case object BETWEEN extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.EQUAL_TO }
    final case object ADDITION extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.DIVISION }
    final case object SUBTRACTION extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends SlackConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.SlackConnectorOperator = software.amazon.awssdk.services.appflow.model.SlackConnectorOperator.NO_OP }
  }
  case class SlackConnectorProfileCredentials(clientId: primitives.ClientId, clientSecret: primitives.ClientSecret, accessToken: scala.Option[primitives.AccessToken] = None, oAuthRequest: scala.Option[ConnectorOAuthRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SlackConnectorProfileCredentials = {
      import SlackConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SlackConnectorProfileCredentials.builder().clientId(clientId: java.lang.String).clientSecret(clientSecret: java.lang.String).optionallyWith(accessToken.map(value => value: java.lang.String))(_.accessToken).optionallyWith(oAuthRequest.map(value => value.buildAwsValue()))(_.oAuthRequest).build()
    }
    def asReadOnly: SlackConnectorProfileCredentials.ReadOnly = SlackConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object SlackConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SlackConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SlackConnectorProfileCredentials = SlackConnectorProfileCredentials(clientIdValue, clientSecretValue, accessTokenValue.map(value => value), oAuthRequestValue.map(value => value.editable))
      def clientIdValue: primitives.ClientId
      def clientSecretValue: primitives.ClientSecret
      def accessTokenValue: scala.Option[primitives.AccessToken]
      def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly]
      def clientId: ZIO[Any, Nothing, primitives.ClientId] = ZIO.succeed(clientIdValue)
      def clientSecret: ZIO[Any, Nothing, primitives.ClientSecret] = ZIO.succeed(clientSecretValue)
      def accessToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccessToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessToken", accessTokenValue)
      def oAuthRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOAuthRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthRequest", oAuthRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SlackConnectorProfileCredentials) extends SlackConnectorProfileCredentials.ReadOnly {
      override def clientIdValue: primitives.ClientId = impl.clientId(): primitives.ClientId
      override def clientSecretValue: primitives.ClientSecret = impl.clientSecret(): primitives.ClientSecret
      override def accessTokenValue: scala.Option[primitives.AccessToken] = scala.Option(impl.accessToken()).map(value => value: primitives.AccessToken)
      override def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly] = scala.Option(impl.oAuthRequest()).map(value => ConnectorOAuthRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SlackConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class SlackConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SlackConnectorProfileProperties = {
      import SlackConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SlackConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: SlackConnectorProfileProperties.ReadOnly = SlackConnectorProfileProperties.wrap(buildAwsValue())
  }
  object SlackConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SlackConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SlackConnectorProfileProperties = SlackConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SlackConnectorProfileProperties) extends SlackConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SlackConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class SlackMetadata(oAuthScopes: scala.Option[Iterable[primitives.OAuthScope]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SlackMetadata = {
      import SlackMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SlackMetadata.builder().optionallyWith(oAuthScopes.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.oAuthScopes).build()
    }
    def asReadOnly: SlackMetadata.ReadOnly = SlackMetadata.wrap(buildAwsValue())
  }
  object SlackMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SlackMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SlackMetadata = SlackMetadata(oAuthScopesValue.map(value => value))
      def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]]
      def oAuthScopes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.OAuthScope]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthScopes", oAuthScopesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SlackMetadata) extends SlackMetadata.ReadOnly {
      override def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]] = scala.Option(impl.oAuthScopes()).map(value => value.asScala.map { item => 
        item: primitives.OAuthScope
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SlackMetadata): ReadOnly = new Wrapper(impl)
  }
  case class SlackSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SlackSourceProperties = {
      import SlackSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SlackSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: SlackSourceProperties.ReadOnly = SlackSourceProperties.wrap(buildAwsValue())
  }
  object SlackSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SlackSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SlackSourceProperties = SlackSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SlackSourceProperties) extends SlackSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SlackSourceProperties): ReadOnly = new Wrapper(impl)
  }
  case class SnowflakeConnectorProfileCredentials(username: primitives.Username, password: primitives.Password) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileCredentials = {
      import SnowflakeConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileCredentials.builder().username(username: java.lang.String).password(password: java.lang.String).build()
    }
    def asReadOnly: SnowflakeConnectorProfileCredentials.ReadOnly = SnowflakeConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object SnowflakeConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SnowflakeConnectorProfileCredentials = SnowflakeConnectorProfileCredentials(usernameValue, passwordValue)
      def usernameValue: primitives.Username
      def passwordValue: primitives.Password
      def username: ZIO[Any, Nothing, primitives.Username] = ZIO.succeed(usernameValue)
      def password: ZIO[Any, Nothing, primitives.Password] = ZIO.succeed(passwordValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileCredentials) extends SnowflakeConnectorProfileCredentials.ReadOnly {
      override def usernameValue: primitives.Username = impl.username(): primitives.Username
      override def passwordValue: primitives.Password = impl.password(): primitives.Password
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class SnowflakeConnectorProfileProperties(warehouse: primitives.Warehouse, stage: primitives.Stage, bucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, privateLinkServiceName: scala.Option[primitives.PrivateLinkServiceName] = None, accountName: scala.Option[primitives.AccountName] = None, region: scala.Option[primitives.Region] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileProperties = {
      import SnowflakeConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileProperties.builder().warehouse(warehouse: java.lang.String).stage(stage: java.lang.String).bucketName(bucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).optionallyWith(privateLinkServiceName.map(value => value: java.lang.String))(_.privateLinkServiceName).optionallyWith(accountName.map(value => value: java.lang.String))(_.accountName).optionallyWith(region.map(value => value: java.lang.String))(_.region).build()
    }
    def asReadOnly: SnowflakeConnectorProfileProperties.ReadOnly = SnowflakeConnectorProfileProperties.wrap(buildAwsValue())
  }
  object SnowflakeConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SnowflakeConnectorProfileProperties = SnowflakeConnectorProfileProperties(warehouseValue, stageValue, bucketNameValue, bucketPrefixValue.map(value => value), privateLinkServiceNameValue.map(value => value), accountNameValue.map(value => value), regionValue.map(value => value))
      def warehouseValue: primitives.Warehouse
      def stageValue: primitives.Stage
      def bucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def privateLinkServiceNameValue: scala.Option[primitives.PrivateLinkServiceName]
      def accountNameValue: scala.Option[primitives.AccountName]
      def regionValue: scala.Option[primitives.Region]
      def warehouse: ZIO[Any, Nothing, primitives.Warehouse] = ZIO.succeed(warehouseValue)
      def stage: ZIO[Any, Nothing, primitives.Stage] = ZIO.succeed(stageValue)
      def bucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(bucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def privateLinkServiceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.PrivateLinkServiceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("privateLinkServiceName", privateLinkServiceNameValue)
      def accountName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccountName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accountName", accountNameValue)
      def region: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.Region] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("region", regionValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileProperties) extends SnowflakeConnectorProfileProperties.ReadOnly {
      override def warehouseValue: primitives.Warehouse = impl.warehouse(): primitives.Warehouse
      override def stageValue: primitives.Stage = impl.stage(): primitives.Stage
      override def bucketNameValue: primitives.BucketName = impl.bucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def privateLinkServiceNameValue: scala.Option[primitives.PrivateLinkServiceName] = scala.Option(impl.privateLinkServiceName()).map(value => value: primitives.PrivateLinkServiceName)
      override def accountNameValue: scala.Option[primitives.AccountName] = scala.Option(impl.accountName()).map(value => value: primitives.AccountName)
      override def regionValue: scala.Option[primitives.Region] = scala.Option(impl.region()).map(value => value: primitives.Region)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SnowflakeConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class SnowflakeDestinationProperties(`object`: primitives.Object, intermediateBucketName: primitives.BucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, errorHandlingConfig: scala.Option[ErrorHandlingConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SnowflakeDestinationProperties = {
      import SnowflakeDestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SnowflakeDestinationProperties.builder().`object`(`object`: java.lang.String).intermediateBucketName(intermediateBucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).optionallyWith(errorHandlingConfig.map(value => value.buildAwsValue()))(_.errorHandlingConfig).build()
    }
    def asReadOnly: SnowflakeDestinationProperties.ReadOnly = SnowflakeDestinationProperties.wrap(buildAwsValue())
  }
  object SnowflakeDestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SnowflakeDestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SnowflakeDestinationProperties = SnowflakeDestinationProperties(objectValue, intermediateBucketNameValue, bucketPrefixValue.map(value => value), errorHandlingConfigValue.map(value => value.editable))
      def objectValue: primitives.Object
      def intermediateBucketNameValue: primitives.BucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly]
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
      def intermediateBucketName: ZIO[Any, Nothing, primitives.BucketName] = ZIO.succeed(intermediateBucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def errorHandlingConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ErrorHandlingConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("errorHandlingConfig", errorHandlingConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SnowflakeDestinationProperties) extends SnowflakeDestinationProperties.ReadOnly {
      override def objectValue: primitives.Object = impl.`object`(): primitives.Object
      override def intermediateBucketNameValue: primitives.BucketName = impl.intermediateBucketName(): primitives.BucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def errorHandlingConfigValue: scala.Option[ErrorHandlingConfig.ReadOnly] = scala.Option(impl.errorHandlingConfig()).map(value => ErrorHandlingConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SnowflakeDestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class SnowflakeMetadata(supportedRegions: scala.Option[Iterable[primitives.Region]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SnowflakeMetadata = {
      import SnowflakeMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SnowflakeMetadata.builder().optionallyWith(supportedRegions.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.supportedRegions).build()
    }
    def asReadOnly: SnowflakeMetadata.ReadOnly = SnowflakeMetadata.wrap(buildAwsValue())
  }
  object SnowflakeMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SnowflakeMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SnowflakeMetadata = SnowflakeMetadata(supportedRegionsValue.map(value => value))
      def supportedRegionsValue: scala.Option[List[primitives.Region]]
      def supportedRegions: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.Region]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("supportedRegions", supportedRegionsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SnowflakeMetadata) extends SnowflakeMetadata.ReadOnly {
      override def supportedRegionsValue: scala.Option[List[primitives.Region]] = scala.Option(impl.supportedRegions()).map(value => value.asScala.map { item => 
        item: primitives.Region
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SnowflakeMetadata): ReadOnly = new Wrapper(impl)
  }
  case class SourceConnectorProperties(amplitude: scala.Option[AmplitudeSourceProperties] = None, datadog: scala.Option[DatadogSourceProperties] = None, dynatrace: scala.Option[DynatraceSourceProperties] = None, googleAnalytics: scala.Option[GoogleAnalyticsSourceProperties] = None, inforNexus: scala.Option[InforNexusSourceProperties] = None, marketo: scala.Option[MarketoSourceProperties] = None, s3: scala.Option[S3SourceProperties] = None, salesforce: scala.Option[SalesforceSourceProperties] = None, serviceNow: scala.Option[ServiceNowSourceProperties] = None, singular: scala.Option[SingularSourceProperties] = None, slack: scala.Option[SlackSourceProperties] = None, trendmicro: scala.Option[TrendmicroSourceProperties] = None, veeva: scala.Option[VeevaSourceProperties] = None, zendesk: scala.Option[ZendeskSourceProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SourceConnectorProperties = {
      import SourceConnectorProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SourceConnectorProperties.builder().optionallyWith(amplitude.map(value => value.buildAwsValue()))(_.amplitude).optionallyWith(datadog.map(value => value.buildAwsValue()))(_.datadog).optionallyWith(dynatrace.map(value => value.buildAwsValue()))(_.dynatrace).optionallyWith(googleAnalytics.map(value => value.buildAwsValue()))(_.googleAnalytics).optionallyWith(inforNexus.map(value => value.buildAwsValue()))(_.inforNexus).optionallyWith(marketo.map(value => value.buildAwsValue()))(_.marketo).optionallyWith(s3.map(value => value.buildAwsValue()))(_.s3).optionallyWith(salesforce.map(value => value.buildAwsValue()))(_.salesforce).optionallyWith(serviceNow.map(value => value.buildAwsValue()))(_.serviceNow).optionallyWith(singular.map(value => value.buildAwsValue()))(_.singular).optionallyWith(slack.map(value => value.buildAwsValue()))(_.slack).optionallyWith(trendmicro.map(value => value.buildAwsValue()))(_.trendmicro).optionallyWith(veeva.map(value => value.buildAwsValue()))(_.veeva).optionallyWith(zendesk.map(value => value.buildAwsValue()))(_.zendesk).build()
    }
    def asReadOnly: SourceConnectorProperties.ReadOnly = SourceConnectorProperties.wrap(buildAwsValue())
  }
  object SourceConnectorProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SourceConnectorProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SourceConnectorProperties = SourceConnectorProperties(amplitudeValue.map(value => value.editable), datadogValue.map(value => value.editable), dynatraceValue.map(value => value.editable), googleAnalyticsValue.map(value => value.editable), inforNexusValue.map(value => value.editable), marketoValue.map(value => value.editable), s3Value.map(value => value.editable), salesforceValue.map(value => value.editable), serviceNowValue.map(value => value.editable), singularValue.map(value => value.editable), slackValue.map(value => value.editable), trendmicroValue.map(value => value.editable), veevaValue.map(value => value.editable), zendeskValue.map(value => value.editable))
      def amplitudeValue: scala.Option[AmplitudeSourceProperties.ReadOnly]
      def datadogValue: scala.Option[DatadogSourceProperties.ReadOnly]
      def dynatraceValue: scala.Option[DynatraceSourceProperties.ReadOnly]
      def googleAnalyticsValue: scala.Option[GoogleAnalyticsSourceProperties.ReadOnly]
      def inforNexusValue: scala.Option[InforNexusSourceProperties.ReadOnly]
      def marketoValue: scala.Option[MarketoSourceProperties.ReadOnly]
      def s3Value: scala.Option[S3SourceProperties.ReadOnly]
      def salesforceValue: scala.Option[SalesforceSourceProperties.ReadOnly]
      def serviceNowValue: scala.Option[ServiceNowSourceProperties.ReadOnly]
      def singularValue: scala.Option[SingularSourceProperties.ReadOnly]
      def slackValue: scala.Option[SlackSourceProperties.ReadOnly]
      def trendmicroValue: scala.Option[TrendmicroSourceProperties.ReadOnly]
      def veevaValue: scala.Option[VeevaSourceProperties.ReadOnly]
      def zendeskValue: scala.Option[ZendeskSourceProperties.ReadOnly]
      def amplitude: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AmplitudeSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("amplitude", amplitudeValue)
      def datadog: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DatadogSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("datadog", datadogValue)
      def dynatrace: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DynatraceSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("dynatrace", dynatraceValue)
      def googleAnalytics: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, GoogleAnalyticsSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("googleAnalytics", googleAnalyticsValue)
      def inforNexus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, InforNexusSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("inforNexus", inforNexusValue)
      def marketo: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, MarketoSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("marketo", marketoValue)
      def s3: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, S3SourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("s3", s3Value)
      def salesforce: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SalesforceSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("salesforce", salesforceValue)
      def serviceNow: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ServiceNowSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceNow", serviceNowValue)
      def singular: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SingularSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("singular", singularValue)
      def slack: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SlackSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("slack", slackValue)
      def trendmicro: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TrendmicroSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("trendmicro", trendmicroValue)
      def veeva: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, VeevaSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("veeva", veevaValue)
      def zendesk: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ZendeskSourceProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("zendesk", zendeskValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SourceConnectorProperties) extends SourceConnectorProperties.ReadOnly {
      override def amplitudeValue: scala.Option[AmplitudeSourceProperties.ReadOnly] = scala.Option(impl.amplitude()).map(value => AmplitudeSourceProperties.wrap(value))
      override def datadogValue: scala.Option[DatadogSourceProperties.ReadOnly] = scala.Option(impl.datadog()).map(value => DatadogSourceProperties.wrap(value))
      override def dynatraceValue: scala.Option[DynatraceSourceProperties.ReadOnly] = scala.Option(impl.dynatrace()).map(value => DynatraceSourceProperties.wrap(value))
      override def googleAnalyticsValue: scala.Option[GoogleAnalyticsSourceProperties.ReadOnly] = scala.Option(impl.googleAnalytics()).map(value => GoogleAnalyticsSourceProperties.wrap(value))
      override def inforNexusValue: scala.Option[InforNexusSourceProperties.ReadOnly] = scala.Option(impl.inforNexus()).map(value => InforNexusSourceProperties.wrap(value))
      override def marketoValue: scala.Option[MarketoSourceProperties.ReadOnly] = scala.Option(impl.marketo()).map(value => MarketoSourceProperties.wrap(value))
      override def s3Value: scala.Option[S3SourceProperties.ReadOnly] = scala.Option(impl.s3()).map(value => S3SourceProperties.wrap(value))
      override def salesforceValue: scala.Option[SalesforceSourceProperties.ReadOnly] = scala.Option(impl.salesforce()).map(value => SalesforceSourceProperties.wrap(value))
      override def serviceNowValue: scala.Option[ServiceNowSourceProperties.ReadOnly] = scala.Option(impl.serviceNow()).map(value => ServiceNowSourceProperties.wrap(value))
      override def singularValue: scala.Option[SingularSourceProperties.ReadOnly] = scala.Option(impl.singular()).map(value => SingularSourceProperties.wrap(value))
      override def slackValue: scala.Option[SlackSourceProperties.ReadOnly] = scala.Option(impl.slack()).map(value => SlackSourceProperties.wrap(value))
      override def trendmicroValue: scala.Option[TrendmicroSourceProperties.ReadOnly] = scala.Option(impl.trendmicro()).map(value => TrendmicroSourceProperties.wrap(value))
      override def veevaValue: scala.Option[VeevaSourceProperties.ReadOnly] = scala.Option(impl.veeva()).map(value => VeevaSourceProperties.wrap(value))
      override def zendeskValue: scala.Option[ZendeskSourceProperties.ReadOnly] = scala.Option(impl.zendesk()).map(value => ZendeskSourceProperties.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SourceConnectorProperties): ReadOnly = new Wrapper(impl)
  }
  case class SourceFieldProperties(isRetrievable: scala.Option[Boolean] = None, isQueryable: scala.Option[Boolean] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SourceFieldProperties = {
      import SourceFieldProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SourceFieldProperties.builder().optionallyWith(isRetrievable.map(value => value: java.lang.Boolean))(_.isRetrievable).optionallyWith(isQueryable.map(value => value: java.lang.Boolean))(_.isQueryable).build()
    }
    def asReadOnly: SourceFieldProperties.ReadOnly = SourceFieldProperties.wrap(buildAwsValue())
  }
  object SourceFieldProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SourceFieldProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SourceFieldProperties = SourceFieldProperties(isRetrievableValue.map(value => value), isQueryableValue.map(value => value))
      def isRetrievableValue: scala.Option[Boolean]
      def isQueryableValue: scala.Option[Boolean]
      def isRetrievable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isRetrievable", isRetrievableValue)
      def isQueryable: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Boolean] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("isQueryable", isQueryableValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SourceFieldProperties) extends SourceFieldProperties.ReadOnly {
      override def isRetrievableValue: scala.Option[Boolean] = scala.Option(impl.isRetrievable()).map(value => value: Boolean)
      override def isQueryableValue: scala.Option[Boolean] = scala.Option(impl.isQueryable()).map(value => value: Boolean)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SourceFieldProperties): ReadOnly = new Wrapper(impl)
  }
  type SourceFields = List[String]
  case class SourceFlowConfig(connectorType: ConnectorType, connectorProfileName: scala.Option[primitives.ConnectorProfileName] = None, sourceConnectorProperties: SourceConnectorProperties, incrementalPullConfig: scala.Option[IncrementalPullConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SourceFlowConfig = {
      import SourceFlowConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SourceFlowConfig.builder().connectorType(connectorType.unwrap).optionallyWith(connectorProfileName.map(value => value: java.lang.String))(_.connectorProfileName).sourceConnectorProperties(sourceConnectorProperties.buildAwsValue()).optionallyWith(incrementalPullConfig.map(value => value.buildAwsValue()))(_.incrementalPullConfig).build()
    }
    def asReadOnly: SourceFlowConfig.ReadOnly = SourceFlowConfig.wrap(buildAwsValue())
  }
  object SourceFlowConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SourceFlowConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SourceFlowConfig = SourceFlowConfig(connectorTypeValue, connectorProfileNameValue.map(value => value), sourceConnectorPropertiesValue.editable, incrementalPullConfigValue.map(value => value.editable))
      def connectorTypeValue: ConnectorType
      def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName]
      def sourceConnectorPropertiesValue: SourceConnectorProperties.ReadOnly
      def incrementalPullConfigValue: scala.Option[IncrementalPullConfig.ReadOnly]
      def connectorType: ZIO[Any, Nothing, ConnectorType] = ZIO.succeed(connectorTypeValue)
      def connectorProfileName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileName", connectorProfileNameValue)
      def sourceConnectorProperties: ZIO[Any, Nothing, SourceConnectorProperties.ReadOnly] = ZIO.succeed(sourceConnectorPropertiesValue)
      def incrementalPullConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, IncrementalPullConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("incrementalPullConfig", incrementalPullConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SourceFlowConfig) extends SourceFlowConfig.ReadOnly {
      override def connectorTypeValue: ConnectorType = ConnectorType.wrap(impl.connectorType())
      override def connectorProfileNameValue: scala.Option[primitives.ConnectorProfileName] = scala.Option(impl.connectorProfileName()).map(value => value: primitives.ConnectorProfileName)
      override def sourceConnectorPropertiesValue: SourceConnectorProperties.ReadOnly = SourceConnectorProperties.wrap(impl.sourceConnectorProperties())
      override def incrementalPullConfigValue: scala.Option[IncrementalPullConfig.ReadOnly] = scala.Option(impl.incrementalPullConfig()).map(value => IncrementalPullConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SourceFlowConfig): ReadOnly = new Wrapper(impl)
  }
  case class StartFlowRequest(flowName: primitives.FlowName) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.StartFlowRequest = {
      import StartFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.StartFlowRequest.builder().flowName(flowName: java.lang.String).build()
    }
    def asReadOnly: StartFlowRequest.ReadOnly = StartFlowRequest.wrap(buildAwsValue())
  }
  object StartFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.StartFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartFlowRequest = StartFlowRequest(flowNameValue)
      def flowNameValue: primitives.FlowName
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.StartFlowRequest) extends StartFlowRequest.ReadOnly { override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.StartFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class StartFlowResponse(flowArn: scala.Option[primitives.FlowArn] = None, flowStatus: scala.Option[FlowStatus] = None, executionId: scala.Option[primitives.ExecutionId] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.StartFlowResponse = {
      import StartFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.StartFlowResponse.builder().optionallyWith(flowArn.map(value => value: java.lang.String))(_.flowArn).optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).optionallyWith(executionId.map(value => value: java.lang.String))(_.executionId).build()
    }
    def asReadOnly: StartFlowResponse.ReadOnly = StartFlowResponse.wrap(buildAwsValue())
  }
  object StartFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.StartFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StartFlowResponse = StartFlowResponse(flowArnValue.map(value => value), flowStatusValue.map(value => value), executionIdValue.map(value => value))
      def flowArnValue: scala.Option[primitives.FlowArn]
      def flowStatusValue: scala.Option[FlowStatus]
      def executionIdValue: scala.Option[primitives.ExecutionId]
      def flowArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowArn", flowArnValue)
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
      def executionId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ExecutionId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("executionId", executionIdValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.StartFlowResponse) extends StartFlowResponse.ReadOnly {
      override def flowArnValue: scala.Option[primitives.FlowArn] = scala.Option(impl.flowArn()).map(value => value: primitives.FlowArn)
      override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value))
      override def executionIdValue: scala.Option[primitives.ExecutionId] = scala.Option(impl.executionId()).map(value => value: primitives.ExecutionId)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.StartFlowResponse): ReadOnly = new Wrapper(impl)
  }
  case class StopFlowRequest(flowName: primitives.FlowName) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.StopFlowRequest = {
      import StopFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.StopFlowRequest.builder().flowName(flowName: java.lang.String).build()
    }
    def asReadOnly: StopFlowRequest.ReadOnly = StopFlowRequest.wrap(buildAwsValue())
  }
  object StopFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.StopFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopFlowRequest = StopFlowRequest(flowNameValue)
      def flowNameValue: primitives.FlowName
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.StopFlowRequest) extends StopFlowRequest.ReadOnly { override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.StopFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class StopFlowResponse(flowArn: scala.Option[primitives.FlowArn] = None, flowStatus: scala.Option[FlowStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.StopFlowResponse = {
      import StopFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.StopFlowResponse.builder().optionallyWith(flowArn.map(value => value: java.lang.String))(_.flowArn).optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).build()
    }
    def asReadOnly: StopFlowResponse.ReadOnly = StopFlowResponse.wrap(buildAwsValue())
  }
  object StopFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.StopFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: StopFlowResponse = StopFlowResponse(flowArnValue.map(value => value), flowStatusValue.map(value => value))
      def flowArnValue: scala.Option[primitives.FlowArn]
      def flowStatusValue: scala.Option[FlowStatus]
      def flowArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowArn", flowArnValue)
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.StopFlowResponse) extends StopFlowResponse.ReadOnly {
      override def flowArnValue: scala.Option[primitives.FlowArn] = scala.Option(impl.flowArn()).map(value => value: primitives.FlowArn)
      override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.StopFlowResponse): ReadOnly = new Wrapper(impl)
  }
  case class SupportedFieldTypeDetails(v1: FieldTypeDetails) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.SupportedFieldTypeDetails = {
      import SupportedFieldTypeDetails.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.SupportedFieldTypeDetails.builder().v1(v1.buildAwsValue()).build()
    }
    def asReadOnly: SupportedFieldTypeDetails.ReadOnly = SupportedFieldTypeDetails.wrap(buildAwsValue())
  }
  object SupportedFieldTypeDetails {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.SupportedFieldTypeDetails] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SupportedFieldTypeDetails = SupportedFieldTypeDetails(v1Value.editable)
      def v1Value: FieldTypeDetails.ReadOnly
      def v1: ZIO[Any, Nothing, FieldTypeDetails.ReadOnly] = ZIO.succeed(v1Value)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.SupportedFieldTypeDetails) extends SupportedFieldTypeDetails.ReadOnly { override def v1Value: FieldTypeDetails.ReadOnly = FieldTypeDetails.wrap(impl.v1()) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.SupportedFieldTypeDetails): ReadOnly = new Wrapper(impl)
  }
  type SupportedValueList = List[primitives.Value]
  type SupportedWriteOperationList = List[WriteOperationType]
  type TagKeyList = List[primitives.TagKey]
  type TagMap = Map[primitives.TagKey, primitives.TagValue]
  case class TagResourceRequest(resourceArn: primitives.ARN, tags: Map[primitives.TagKey, primitives.TagValue]) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TagResourceRequest = {
      import TagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tags(tags.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava).build()
    }
    def asReadOnly: TagResourceRequest.ReadOnly = TagResourceRequest.wrap(buildAwsValue())
  }
  object TagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceRequest = TagResourceRequest(resourceArnValue, tagsValue)
      def resourceArnValue: primitives.ARN
      def tagsValue: Map[primitives.TagKey, primitives.TagValue]
      def resourceArn: ZIO[Any, Nothing, primitives.ARN] = ZIO.succeed(resourceArnValue)
      def tags: ZIO[Any, Nothing, Map[primitives.TagKey, primitives.TagValue]] = ZIO.succeed(tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TagResourceRequest) extends TagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.ARN = impl.resourceArn(): primitives.ARN
      override def tagsValue: Map[primitives.TagKey, primitives.TagValue] = impl.tags().asScala.map({
        case (key, value) =>
          (key: primitives.TagKey) -> (value: primitives.TagValue)
      }).toMap
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class TagResourceResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TagResourceResponse = {
      import TagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TagResourceResponse.builder().build()
    }
    def asReadOnly: TagResourceResponse.ReadOnly = TagResourceResponse.wrap(buildAwsValue())
  }
  object TagResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: TagResourceResponse = TagResourceResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TagResourceResponse) extends TagResourceResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class Task(sourceFields: Iterable[String], connectorOperator: scala.Option[ConnectorOperator] = None, destinationField: scala.Option[primitives.DestinationField] = None, taskType: TaskType, taskProperties: scala.Option[Map[OperatorPropertiesKeys, primitives.Property]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.Task = {
      import Task.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.Task.builder().sourceFields(sourceFields.map { item => 
        item: java.lang.String
      }.asJavaCollection).optionallyWith(connectorOperator.map(value => value.buildAwsValue()))(_.connectorOperator).optionallyWith(destinationField.map(value => value: java.lang.String))(_.destinationField).taskType(taskType.unwrap).optionallyWith(taskProperties.map(value => value.map({
        case (key, value) =>
          key.unwrap.toString -> (value: java.lang.String)
      }).asJava))(_.taskPropertiesWithStrings).build()
    }
    def asReadOnly: Task.ReadOnly = Task.wrap(buildAwsValue())
  }
  object Task {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.Task] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Task = Task(sourceFieldsValue, connectorOperatorValue.map(value => value.editable), destinationFieldValue.map(value => value), taskTypeValue, taskPropertiesValue.map(value => value))
      def sourceFieldsValue: List[String]
      def connectorOperatorValue: scala.Option[ConnectorOperator.ReadOnly]
      def destinationFieldValue: scala.Option[primitives.DestinationField]
      def taskTypeValue: TaskType
      def taskPropertiesValue: scala.Option[Map[OperatorPropertiesKeys, primitives.Property]]
      def sourceFields: ZIO[Any, Nothing, List[String]] = ZIO.succeed(sourceFieldsValue)
      def connectorOperator: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOperator.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorOperator", connectorOperatorValue)
      def destinationField: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.DestinationField] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("destinationField", destinationFieldValue)
      def taskType: ZIO[Any, Nothing, TaskType] = ZIO.succeed(taskTypeValue)
      def taskProperties: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, Map[OperatorPropertiesKeys, primitives.Property]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("taskProperties", taskPropertiesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.Task) extends Task.ReadOnly {
      override def sourceFieldsValue: List[String] = impl.sourceFields().asScala.map { item => 
        item: String
      }.toList
      override def connectorOperatorValue: scala.Option[ConnectorOperator.ReadOnly] = scala.Option(impl.connectorOperator()).map(value => ConnectorOperator.wrap(value))
      override def destinationFieldValue: scala.Option[primitives.DestinationField] = scala.Option(impl.destinationField()).map(value => value: primitives.DestinationField)
      override def taskTypeValue: TaskType = TaskType.wrap(impl.taskType())
      override def taskPropertiesValue: scala.Option[Map[OperatorPropertiesKeys, primitives.Property]] = scala.Option(impl.taskProperties()).map(value => value.asScala.map({
        case (key, value) =>
          OperatorPropertiesKeys.wrap(key) -> (value: primitives.Property)
      }).toMap)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.Task): ReadOnly = new Wrapper(impl)
  }
  type TaskPropertiesMap = Map[OperatorPropertiesKeys, primitives.Property]
  sealed trait TaskType { def unwrap: software.amazon.awssdk.services.appflow.model.TaskType }
  object TaskType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.TaskType): TaskType = value match {
      case software.amazon.awssdk.services.appflow.model.TaskType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.TaskType.ARITHMETIC => Arithmetic
      case software.amazon.awssdk.services.appflow.model.TaskType.FILTER => Filter
      case software.amazon.awssdk.services.appflow.model.TaskType.MAP => Map
      case software.amazon.awssdk.services.appflow.model.TaskType.MASK => Mask
      case software.amazon.awssdk.services.appflow.model.TaskType.MERGE => Merge
      case software.amazon.awssdk.services.appflow.model.TaskType.TRUNCATE => Truncate
      case software.amazon.awssdk.services.appflow.model.TaskType.VALIDATE => Validate
    }
    final case object unknownToSdkVersion extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.UNKNOWN_TO_SDK_VERSION }
    final case object Arithmetic extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.ARITHMETIC }
    final case object Filter extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.FILTER }
    final case object Map extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.MAP }
    final case object Mask extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.MASK }
    final case object Merge extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.MERGE }
    final case object Truncate extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.TRUNCATE }
    final case object Validate extends TaskType { override def unwrap: software.amazon.awssdk.services.appflow.model.TaskType = software.amazon.awssdk.services.appflow.model.TaskType.VALIDATE }
  }
  type Tasks = List[Task]
  sealed trait TrendmicroConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator }
  object TrendmicroConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator): TrendmicroConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.PROJECTION }
    final case object EQUAL_TO extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.EQUAL_TO }
    final case object ADDITION extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.DIVISION }
    final case object SUBTRACTION extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends TrendmicroConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator = software.amazon.awssdk.services.appflow.model.TrendmicroConnectorOperator.NO_OP }
  }
  case class TrendmicroConnectorProfileCredentials(apiSecretKey: primitives.ApiSecretKey) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileCredentials = {
      import TrendmicroConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileCredentials.builder().apiSecretKey(apiSecretKey: java.lang.String).build()
    }
    def asReadOnly: TrendmicroConnectorProfileCredentials.ReadOnly = TrendmicroConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object TrendmicroConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TrendmicroConnectorProfileCredentials = TrendmicroConnectorProfileCredentials(apiSecretKeyValue)
      def apiSecretKeyValue: primitives.ApiSecretKey
      def apiSecretKey: ZIO[Any, Nothing, primitives.ApiSecretKey] = ZIO.succeed(apiSecretKeyValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileCredentials) extends TrendmicroConnectorProfileCredentials.ReadOnly { override def apiSecretKeyValue: primitives.ApiSecretKey = impl.apiSecretKey(): primitives.ApiSecretKey }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class TrendmicroConnectorProfileProperties() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileProperties = {
      import TrendmicroConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileProperties.builder().build()
    }
    def asReadOnly: TrendmicroConnectorProfileProperties.ReadOnly = TrendmicroConnectorProfileProperties.wrap(buildAwsValue())
  }
  object TrendmicroConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: TrendmicroConnectorProfileProperties = TrendmicroConnectorProfileProperties() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileProperties) extends TrendmicroConnectorProfileProperties.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TrendmicroConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class TrendmicroMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TrendmicroMetadata = {
      import TrendmicroMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TrendmicroMetadata.builder().build()
    }
    def asReadOnly: TrendmicroMetadata.ReadOnly = TrendmicroMetadata.wrap(buildAwsValue())
  }
  object TrendmicroMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TrendmicroMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: TrendmicroMetadata = TrendmicroMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TrendmicroMetadata) extends TrendmicroMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TrendmicroMetadata): ReadOnly = new Wrapper(impl)
  }
  case class TrendmicroSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TrendmicroSourceProperties = {
      import TrendmicroSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TrendmicroSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: TrendmicroSourceProperties.ReadOnly = TrendmicroSourceProperties.wrap(buildAwsValue())
  }
  object TrendmicroSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TrendmicroSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TrendmicroSourceProperties = TrendmicroSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TrendmicroSourceProperties) extends TrendmicroSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TrendmicroSourceProperties): ReadOnly = new Wrapper(impl)
  }
  case class TriggerConfig(triggerType: TriggerType, triggerProperties: scala.Option[TriggerProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TriggerConfig = {
      import TriggerConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TriggerConfig.builder().triggerType(triggerType.unwrap).optionallyWith(triggerProperties.map(value => value.buildAwsValue()))(_.triggerProperties).build()
    }
    def asReadOnly: TriggerConfig.ReadOnly = TriggerConfig.wrap(buildAwsValue())
  }
  object TriggerConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TriggerConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TriggerConfig = TriggerConfig(triggerTypeValue, triggerPropertiesValue.map(value => value.editable))
      def triggerTypeValue: TriggerType
      def triggerPropertiesValue: scala.Option[TriggerProperties.ReadOnly]
      def triggerType: ZIO[Any, Nothing, TriggerType] = ZIO.succeed(triggerTypeValue)
      def triggerProperties: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TriggerProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("triggerProperties", triggerPropertiesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TriggerConfig) extends TriggerConfig.ReadOnly {
      override def triggerTypeValue: TriggerType = TriggerType.wrap(impl.triggerType())
      override def triggerPropertiesValue: scala.Option[TriggerProperties.ReadOnly] = scala.Option(impl.triggerProperties()).map(value => TriggerProperties.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TriggerConfig): ReadOnly = new Wrapper(impl)
  }
  case class TriggerProperties(scheduled: scala.Option[ScheduledTriggerProperties] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.TriggerProperties = {
      import TriggerProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.TriggerProperties.builder().optionallyWith(scheduled.map(value => value.buildAwsValue()))(_.scheduled).build()
    }
    def asReadOnly: TriggerProperties.ReadOnly = TriggerProperties.wrap(buildAwsValue())
  }
  object TriggerProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.TriggerProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TriggerProperties = TriggerProperties(scheduledValue.map(value => value.editable))
      def scheduledValue: scala.Option[ScheduledTriggerProperties.ReadOnly]
      def scheduled: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ScheduledTriggerProperties.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("scheduled", scheduledValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.TriggerProperties) extends TriggerProperties.ReadOnly { override def scheduledValue: scala.Option[ScheduledTriggerProperties.ReadOnly] = scala.Option(impl.scheduled()).map(value => ScheduledTriggerProperties.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.TriggerProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait TriggerType { def unwrap: software.amazon.awssdk.services.appflow.model.TriggerType }
  object TriggerType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.TriggerType): TriggerType = value match {
      case software.amazon.awssdk.services.appflow.model.TriggerType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.TriggerType.SCHEDULED => Scheduled
      case software.amazon.awssdk.services.appflow.model.TriggerType.EVENT => Event
      case software.amazon.awssdk.services.appflow.model.TriggerType.ON_DEMAND => OnDemand
    }
    final case object unknownToSdkVersion extends TriggerType { override def unwrap: software.amazon.awssdk.services.appflow.model.TriggerType = software.amazon.awssdk.services.appflow.model.TriggerType.UNKNOWN_TO_SDK_VERSION }
    final case object Scheduled extends TriggerType { override def unwrap: software.amazon.awssdk.services.appflow.model.TriggerType = software.amazon.awssdk.services.appflow.model.TriggerType.SCHEDULED }
    final case object Event extends TriggerType { override def unwrap: software.amazon.awssdk.services.appflow.model.TriggerType = software.amazon.awssdk.services.appflow.model.TriggerType.EVENT }
    final case object OnDemand extends TriggerType { override def unwrap: software.amazon.awssdk.services.appflow.model.TriggerType = software.amazon.awssdk.services.appflow.model.TriggerType.ON_DEMAND }
  }
  type TriggerTypeList = List[TriggerType]
  case class UntagResourceRequest(resourceArn: primitives.ARN, tagKeys: Iterable[primitives.TagKey]) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UntagResourceRequest = {
      import UntagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UntagResourceRequest.builder().resourceArn(resourceArn: java.lang.String).tagKeys(tagKeys.map { item => 
        item: java.lang.String
      }.asJavaCollection).build()
    }
    def asReadOnly: UntagResourceRequest.ReadOnly = UntagResourceRequest.wrap(buildAwsValue())
  }
  object UntagResourceRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UntagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceRequest = UntagResourceRequest(resourceArnValue, tagKeysValue)
      def resourceArnValue: primitives.ARN
      def tagKeysValue: List[primitives.TagKey]
      def resourceArn: ZIO[Any, Nothing, primitives.ARN] = ZIO.succeed(resourceArnValue)
      def tagKeys: ZIO[Any, Nothing, List[primitives.TagKey]] = ZIO.succeed(tagKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UntagResourceRequest) extends UntagResourceRequest.ReadOnly {
      override def resourceArnValue: primitives.ARN = impl.resourceArn(): primitives.ARN
      override def tagKeysValue: List[primitives.TagKey] = impl.tagKeys().asScala.map { item => 
        item: primitives.TagKey
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UntagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  case class UntagResourceResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UntagResourceResponse = {
      import UntagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UntagResourceResponse.builder().build()
    }
    def asReadOnly: UntagResourceResponse.ReadOnly = UntagResourceResponse.wrap(buildAwsValue())
  }
  object UntagResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UntagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: UntagResourceResponse = UntagResourceResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UntagResourceResponse) extends UntagResourceResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UntagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateConnectorProfileRequest(connectorProfileName: primitives.ConnectorProfileName, connectionMode: ConnectionMode, connectorProfileConfig: ConnectorProfileConfig) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileRequest = {
      import UpdateConnectorProfileRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileRequest.builder().connectorProfileName(connectorProfileName: java.lang.String).connectionMode(connectionMode.unwrap).connectorProfileConfig(connectorProfileConfig.buildAwsValue()).build()
    }
    def asReadOnly: UpdateConnectorProfileRequest.ReadOnly = UpdateConnectorProfileRequest.wrap(buildAwsValue())
  }
  object UpdateConnectorProfileRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateConnectorProfileRequest = UpdateConnectorProfileRequest(connectorProfileNameValue, connectionModeValue, connectorProfileConfigValue.editable)
      def connectorProfileNameValue: primitives.ConnectorProfileName
      def connectionModeValue: ConnectionMode
      def connectorProfileConfigValue: ConnectorProfileConfig.ReadOnly
      def connectorProfileName: ZIO[Any, Nothing, primitives.ConnectorProfileName] = ZIO.succeed(connectorProfileNameValue)
      def connectionMode: ZIO[Any, Nothing, ConnectionMode] = ZIO.succeed(connectionModeValue)
      def connectorProfileConfig: ZIO[Any, Nothing, ConnectorProfileConfig.ReadOnly] = ZIO.succeed(connectorProfileConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileRequest) extends UpdateConnectorProfileRequest.ReadOnly {
      override def connectorProfileNameValue: primitives.ConnectorProfileName = impl.connectorProfileName(): primitives.ConnectorProfileName
      override def connectionModeValue: ConnectionMode = ConnectionMode.wrap(impl.connectionMode())
      override def connectorProfileConfigValue: ConnectorProfileConfig.ReadOnly = ConnectorProfileConfig.wrap(impl.connectorProfileConfig())
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateConnectorProfileResponse(connectorProfileArn: scala.Option[primitives.ConnectorProfileArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileResponse = {
      import UpdateConnectorProfileResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileResponse.builder().optionallyWith(connectorProfileArn.map(value => value: java.lang.String))(_.connectorProfileArn).build()
    }
    def asReadOnly: UpdateConnectorProfileResponse.ReadOnly = UpdateConnectorProfileResponse.wrap(buildAwsValue())
  }
  object UpdateConnectorProfileResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateConnectorProfileResponse = UpdateConnectorProfileResponse(connectorProfileArnValue.map(value => value))
      def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn]
      def connectorProfileArn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ConnectorProfileArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("connectorProfileArn", connectorProfileArnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileResponse) extends UpdateConnectorProfileResponse.ReadOnly { override def connectorProfileArnValue: scala.Option[primitives.ConnectorProfileArn] = scala.Option(impl.connectorProfileArn()).map(value => value: primitives.ConnectorProfileArn) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpdateConnectorProfileResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpdateFlowRequest(flowName: primitives.FlowName, description: scala.Option[primitives.FlowDescription] = None, triggerConfig: TriggerConfig, sourceFlowConfig: scala.Option[SourceFlowConfig] = None, destinationFlowConfigList: Iterable[DestinationFlowConfig], tasks: Iterable[Task]) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpdateFlowRequest = {
      import UpdateFlowRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpdateFlowRequest.builder().flowName(flowName: java.lang.String).optionallyWith(description.map(value => value: java.lang.String))(_.description).triggerConfig(triggerConfig.buildAwsValue()).optionallyWith(sourceFlowConfig.map(value => value.buildAwsValue()))(_.sourceFlowConfig).destinationFlowConfigList(destinationFlowConfigList.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).tasks(tasks.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).build()
    }
    def asReadOnly: UpdateFlowRequest.ReadOnly = UpdateFlowRequest.wrap(buildAwsValue())
  }
  object UpdateFlowRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpdateFlowRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateFlowRequest = UpdateFlowRequest(flowNameValue, descriptionValue.map(value => value), triggerConfigValue.editable, sourceFlowConfigValue.map(value => value.editable), destinationFlowConfigListValue.map { item => 
        item.editable
      }, tasksValue.map { item => 
        item.editable
      })
      def flowNameValue: primitives.FlowName
      def descriptionValue: scala.Option[primitives.FlowDescription]
      def triggerConfigValue: TriggerConfig.ReadOnly
      def sourceFlowConfigValue: scala.Option[SourceFlowConfig.ReadOnly]
      def destinationFlowConfigListValue: List[DestinationFlowConfig.ReadOnly]
      def tasksValue: List[Task.ReadOnly]
      def flowName: ZIO[Any, Nothing, primitives.FlowName] = ZIO.succeed(flowNameValue)
      def description: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.FlowDescription] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("description", descriptionValue)
      def triggerConfig: ZIO[Any, Nothing, TriggerConfig.ReadOnly] = ZIO.succeed(triggerConfigValue)
      def sourceFlowConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, SourceFlowConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("sourceFlowConfig", sourceFlowConfigValue)
      def destinationFlowConfigList: ZIO[Any, Nothing, List[DestinationFlowConfig.ReadOnly]] = ZIO.succeed(destinationFlowConfigListValue)
      def tasks: ZIO[Any, Nothing, List[Task.ReadOnly]] = ZIO.succeed(tasksValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpdateFlowRequest) extends UpdateFlowRequest.ReadOnly {
      override def flowNameValue: primitives.FlowName = impl.flowName(): primitives.FlowName
      override def descriptionValue: scala.Option[primitives.FlowDescription] = scala.Option(impl.description()).map(value => value: primitives.FlowDescription)
      override def triggerConfigValue: TriggerConfig.ReadOnly = TriggerConfig.wrap(impl.triggerConfig())
      override def sourceFlowConfigValue: scala.Option[SourceFlowConfig.ReadOnly] = scala.Option(impl.sourceFlowConfig()).map(value => SourceFlowConfig.wrap(value))
      override def destinationFlowConfigListValue: List[DestinationFlowConfig.ReadOnly] = impl.destinationFlowConfigList().asScala.map { item => 
        DestinationFlowConfig.wrap(item)
      }.toList
      override def tasksValue: List[Task.ReadOnly] = impl.tasks().asScala.map { item => 
        Task.wrap(item)
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpdateFlowRequest): ReadOnly = new Wrapper(impl)
  }
  case class UpdateFlowResponse(flowStatus: scala.Option[FlowStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpdateFlowResponse = {
      import UpdateFlowResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpdateFlowResponse.builder().optionallyWith(flowStatus.map(value => value.unwrap))(_.flowStatus).build()
    }
    def asReadOnly: UpdateFlowResponse.ReadOnly = UpdateFlowResponse.wrap(buildAwsValue())
  }
  object UpdateFlowResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpdateFlowResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateFlowResponse = UpdateFlowResponse(flowStatusValue.map(value => value))
      def flowStatusValue: scala.Option[FlowStatus]
      def flowStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FlowStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("flowStatus", flowStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpdateFlowResponse) extends UpdateFlowResponse.ReadOnly { override def flowStatusValue: scala.Option[FlowStatus] = scala.Option(impl.flowStatus()).map(value => FlowStatus.wrap(value)) }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpdateFlowResponse): ReadOnly = new Wrapper(impl)
  }
  case class UpsolverDestinationProperties(bucketName: primitives.UpsolverBucketName, bucketPrefix: scala.Option[primitives.BucketPrefix] = None, s3OutputFormatConfig: UpsolverS3OutputFormatConfig) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpsolverDestinationProperties = {
      import UpsolverDestinationProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpsolverDestinationProperties.builder().bucketName(bucketName: java.lang.String).optionallyWith(bucketPrefix.map(value => value: java.lang.String))(_.bucketPrefix).s3OutputFormatConfig(s3OutputFormatConfig.buildAwsValue()).build()
    }
    def asReadOnly: UpsolverDestinationProperties.ReadOnly = UpsolverDestinationProperties.wrap(buildAwsValue())
  }
  object UpsolverDestinationProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpsolverDestinationProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpsolverDestinationProperties = UpsolverDestinationProperties(bucketNameValue, bucketPrefixValue.map(value => value), s3OutputFormatConfigValue.editable)
      def bucketNameValue: primitives.UpsolverBucketName
      def bucketPrefixValue: scala.Option[primitives.BucketPrefix]
      def s3OutputFormatConfigValue: UpsolverS3OutputFormatConfig.ReadOnly
      def bucketName: ZIO[Any, Nothing, primitives.UpsolverBucketName] = ZIO.succeed(bucketNameValue)
      def bucketPrefix: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.BucketPrefix] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("bucketPrefix", bucketPrefixValue)
      def s3OutputFormatConfig: ZIO[Any, Nothing, UpsolverS3OutputFormatConfig.ReadOnly] = ZIO.succeed(s3OutputFormatConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpsolverDestinationProperties) extends UpsolverDestinationProperties.ReadOnly {
      override def bucketNameValue: primitives.UpsolverBucketName = impl.bucketName(): primitives.UpsolverBucketName
      override def bucketPrefixValue: scala.Option[primitives.BucketPrefix] = scala.Option(impl.bucketPrefix()).map(value => value: primitives.BucketPrefix)
      override def s3OutputFormatConfigValue: UpsolverS3OutputFormatConfig.ReadOnly = UpsolverS3OutputFormatConfig.wrap(impl.s3OutputFormatConfig())
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpsolverDestinationProperties): ReadOnly = new Wrapper(impl)
  }
  case class UpsolverMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpsolverMetadata = {
      import UpsolverMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpsolverMetadata.builder().build()
    }
    def asReadOnly: UpsolverMetadata.ReadOnly = UpsolverMetadata.wrap(buildAwsValue())
  }
  object UpsolverMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpsolverMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: UpsolverMetadata = UpsolverMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpsolverMetadata) extends UpsolverMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpsolverMetadata): ReadOnly = new Wrapper(impl)
  }
  case class UpsolverS3OutputFormatConfig(fileType: scala.Option[FileType] = None, prefixConfig: PrefixConfig, aggregationConfig: scala.Option[AggregationConfig] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.UpsolverS3OutputFormatConfig = {
      import UpsolverS3OutputFormatConfig.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.UpsolverS3OutputFormatConfig.builder().optionallyWith(fileType.map(value => value.unwrap))(_.fileType).prefixConfig(prefixConfig.buildAwsValue()).optionallyWith(aggregationConfig.map(value => value.buildAwsValue()))(_.aggregationConfig).build()
    }
    def asReadOnly: UpsolverS3OutputFormatConfig.ReadOnly = UpsolverS3OutputFormatConfig.wrap(buildAwsValue())
  }
  object UpsolverS3OutputFormatConfig {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.UpsolverS3OutputFormatConfig] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpsolverS3OutputFormatConfig = UpsolverS3OutputFormatConfig(fileTypeValue.map(value => value), prefixConfigValue.editable, aggregationConfigValue.map(value => value.editable))
      def fileTypeValue: scala.Option[FileType]
      def prefixConfigValue: PrefixConfig.ReadOnly
      def aggregationConfigValue: scala.Option[AggregationConfig.ReadOnly]
      def fileType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, FileType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("fileType", fileTypeValue)
      def prefixConfig: ZIO[Any, Nothing, PrefixConfig.ReadOnly] = ZIO.succeed(prefixConfigValue)
      def aggregationConfig: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, AggregationConfig.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("aggregationConfig", aggregationConfigValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.UpsolverS3OutputFormatConfig) extends UpsolverS3OutputFormatConfig.ReadOnly {
      override def fileTypeValue: scala.Option[FileType] = scala.Option(impl.fileType()).map(value => FileType.wrap(value))
      override def prefixConfigValue: PrefixConfig.ReadOnly = PrefixConfig.wrap(impl.prefixConfig())
      override def aggregationConfigValue: scala.Option[AggregationConfig.ReadOnly] = scala.Option(impl.aggregationConfig()).map(value => AggregationConfig.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.UpsolverS3OutputFormatConfig): ReadOnly = new Wrapper(impl)
  }
  sealed trait VeevaConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator }
  object VeevaConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator): VeevaConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.LESS_THAN => LESS_THAN
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.CONTAINS => CONTAINS
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.BETWEEN => BETWEEN
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.EQUAL_TO => EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.NOT_EQUAL_TO => NOT_EQUAL_TO
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.PROJECTION }
    final case object LESS_THAN extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.LESS_THAN }
    final case object GREATER_THAN extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.GREATER_THAN }
    final case object CONTAINS extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.CONTAINS }
    final case object BETWEEN extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.BETWEEN }
    final case object LESS_THAN_OR_EQUAL_TO extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.LESS_THAN_OR_EQUAL_TO }
    final case object GREATER_THAN_OR_EQUAL_TO extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.GREATER_THAN_OR_EQUAL_TO }
    final case object EQUAL_TO extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.EQUAL_TO }
    final case object NOT_EQUAL_TO extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.NOT_EQUAL_TO }
    final case object ADDITION extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.DIVISION }
    final case object SUBTRACTION extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends VeevaConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator = software.amazon.awssdk.services.appflow.model.VeevaConnectorOperator.NO_OP }
  }
  case class VeevaConnectorProfileCredentials(username: primitives.Username, password: primitives.Password) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileCredentials = {
      import VeevaConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileCredentials.builder().username(username: java.lang.String).password(password: java.lang.String).build()
    }
    def asReadOnly: VeevaConnectorProfileCredentials.ReadOnly = VeevaConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object VeevaConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: VeevaConnectorProfileCredentials = VeevaConnectorProfileCredentials(usernameValue, passwordValue)
      def usernameValue: primitives.Username
      def passwordValue: primitives.Password
      def username: ZIO[Any, Nothing, primitives.Username] = ZIO.succeed(usernameValue)
      def password: ZIO[Any, Nothing, primitives.Password] = ZIO.succeed(passwordValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileCredentials) extends VeevaConnectorProfileCredentials.ReadOnly {
      override def usernameValue: primitives.Username = impl.username(): primitives.Username
      override def passwordValue: primitives.Password = impl.password(): primitives.Password
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class VeevaConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileProperties = {
      import VeevaConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: VeevaConnectorProfileProperties.ReadOnly = VeevaConnectorProfileProperties.wrap(buildAwsValue())
  }
  object VeevaConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: VeevaConnectorProfileProperties = VeevaConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileProperties) extends VeevaConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.VeevaConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class VeevaMetadata() {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.VeevaMetadata = {
      import VeevaMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.VeevaMetadata.builder().build()
    }
    def asReadOnly: VeevaMetadata.ReadOnly = VeevaMetadata.wrap(buildAwsValue())
  }
  object VeevaMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.VeevaMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: VeevaMetadata = VeevaMetadata() }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.VeevaMetadata) extends VeevaMetadata.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.appflow.model.VeevaMetadata): ReadOnly = new Wrapper(impl)
  }
  case class VeevaSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.VeevaSourceProperties = {
      import VeevaSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.VeevaSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: VeevaSourceProperties.ReadOnly = VeevaSourceProperties.wrap(buildAwsValue())
  }
  object VeevaSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.VeevaSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: VeevaSourceProperties = VeevaSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.VeevaSourceProperties) extends VeevaSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.VeevaSourceProperties): ReadOnly = new Wrapper(impl)
  }
  sealed trait WriteOperationType { def unwrap: software.amazon.awssdk.services.appflow.model.WriteOperationType }
  object WriteOperationType {
    def wrap(value: software.amazon.awssdk.services.appflow.model.WriteOperationType): WriteOperationType = value match {
      case software.amazon.awssdk.services.appflow.model.WriteOperationType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.WriteOperationType.INSERT => INSERT
      case software.amazon.awssdk.services.appflow.model.WriteOperationType.UPSERT => UPSERT
      case software.amazon.awssdk.services.appflow.model.WriteOperationType.UPDATE => UPDATE
    }
    final case object unknownToSdkVersion extends WriteOperationType { override def unwrap: software.amazon.awssdk.services.appflow.model.WriteOperationType = software.amazon.awssdk.services.appflow.model.WriteOperationType.UNKNOWN_TO_SDK_VERSION }
    final case object INSERT extends WriteOperationType { override def unwrap: software.amazon.awssdk.services.appflow.model.WriteOperationType = software.amazon.awssdk.services.appflow.model.WriteOperationType.INSERT }
    final case object UPSERT extends WriteOperationType { override def unwrap: software.amazon.awssdk.services.appflow.model.WriteOperationType = software.amazon.awssdk.services.appflow.model.WriteOperationType.UPSERT }
    final case object UPDATE extends WriteOperationType { override def unwrap: software.amazon.awssdk.services.appflow.model.WriteOperationType = software.amazon.awssdk.services.appflow.model.WriteOperationType.UPDATE }
  }
  sealed trait ZendeskConnectorOperator { def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator }
  object ZendeskConnectorOperator {
    def wrap(value: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator): ZendeskConnectorOperator = value match {
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.PROJECTION => PROJECTION
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.GREATER_THAN => GREATER_THAN
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.ADDITION => ADDITION
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MULTIPLICATION => MULTIPLICATION
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.DIVISION => DIVISION
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.SUBTRACTION => SUBTRACTION
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_ALL => MASK_ALL
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_FIRST_N => MASK_FIRST_N
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_LAST_N => MASK_LAST_N
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_NULL => VALIDATE_NON_NULL
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_ZERO => VALIDATE_NON_ZERO
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_NEGATIVE => VALIDATE_NON_NEGATIVE
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NUMERIC => VALIDATE_NUMERIC
      case software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.NO_OP => NO_OP
    }
    final case object unknownToSdkVersion extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.UNKNOWN_TO_SDK_VERSION }
    final case object PROJECTION extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.PROJECTION }
    final case object GREATER_THAN extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.GREATER_THAN }
    final case object ADDITION extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.ADDITION }
    final case object MULTIPLICATION extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MULTIPLICATION }
    final case object DIVISION extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.DIVISION }
    final case object SUBTRACTION extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.SUBTRACTION }
    final case object MASK_ALL extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_ALL }
    final case object MASK_FIRST_N extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_FIRST_N }
    final case object MASK_LAST_N extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.MASK_LAST_N }
    final case object VALIDATE_NON_NULL extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_NULL }
    final case object VALIDATE_NON_ZERO extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_ZERO }
    final case object VALIDATE_NON_NEGATIVE extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NON_NEGATIVE }
    final case object VALIDATE_NUMERIC extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.VALIDATE_NUMERIC }
    final case object NO_OP extends ZendeskConnectorOperator { override def unwrap: software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator = software.amazon.awssdk.services.appflow.model.ZendeskConnectorOperator.NO_OP }
  }
  case class ZendeskConnectorProfileCredentials(clientId: primitives.ClientId, clientSecret: primitives.ClientSecret, accessToken: scala.Option[primitives.AccessToken] = None, oAuthRequest: scala.Option[ConnectorOAuthRequest] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileCredentials = {
      import ZendeskConnectorProfileCredentials.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileCredentials.builder().clientId(clientId: java.lang.String).clientSecret(clientSecret: java.lang.String).optionallyWith(accessToken.map(value => value: java.lang.String))(_.accessToken).optionallyWith(oAuthRequest.map(value => value.buildAwsValue()))(_.oAuthRequest).build()
    }
    def asReadOnly: ZendeskConnectorProfileCredentials.ReadOnly = ZendeskConnectorProfileCredentials.wrap(buildAwsValue())
  }
  object ZendeskConnectorProfileCredentials {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileCredentials] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ZendeskConnectorProfileCredentials = ZendeskConnectorProfileCredentials(clientIdValue, clientSecretValue, accessTokenValue.map(value => value), oAuthRequestValue.map(value => value.editable))
      def clientIdValue: primitives.ClientId
      def clientSecretValue: primitives.ClientSecret
      def accessTokenValue: scala.Option[primitives.AccessToken]
      def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly]
      def clientId: ZIO[Any, Nothing, primitives.ClientId] = ZIO.succeed(clientIdValue)
      def clientSecret: ZIO[Any, Nothing, primitives.ClientSecret] = ZIO.succeed(clientSecretValue)
      def accessToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.AccessToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("accessToken", accessTokenValue)
      def oAuthRequest: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, ConnectorOAuthRequest.ReadOnly] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthRequest", oAuthRequestValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileCredentials) extends ZendeskConnectorProfileCredentials.ReadOnly {
      override def clientIdValue: primitives.ClientId = impl.clientId(): primitives.ClientId
      override def clientSecretValue: primitives.ClientSecret = impl.clientSecret(): primitives.ClientSecret
      override def accessTokenValue: scala.Option[primitives.AccessToken] = scala.Option(impl.accessToken()).map(value => value: primitives.AccessToken)
      override def oAuthRequestValue: scala.Option[ConnectorOAuthRequest.ReadOnly] = scala.Option(impl.oAuthRequest()).map(value => ConnectorOAuthRequest.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileCredentials): ReadOnly = new Wrapper(impl)
  }
  case class ZendeskConnectorProfileProperties(instanceUrl: primitives.InstanceUrl) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileProperties = {
      import ZendeskConnectorProfileProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileProperties.builder().instanceUrl(instanceUrl: java.lang.String).build()
    }
    def asReadOnly: ZendeskConnectorProfileProperties.ReadOnly = ZendeskConnectorProfileProperties.wrap(buildAwsValue())
  }
  object ZendeskConnectorProfileProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ZendeskConnectorProfileProperties = ZendeskConnectorProfileProperties(instanceUrlValue)
      def instanceUrlValue: primitives.InstanceUrl
      def instanceUrl: ZIO[Any, Nothing, primitives.InstanceUrl] = ZIO.succeed(instanceUrlValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileProperties) extends ZendeskConnectorProfileProperties.ReadOnly { override def instanceUrlValue: primitives.InstanceUrl = impl.instanceUrl(): primitives.InstanceUrl }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ZendeskConnectorProfileProperties): ReadOnly = new Wrapper(impl)
  }
  case class ZendeskMetadata(oAuthScopes: scala.Option[Iterable[primitives.OAuthScope]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ZendeskMetadata = {
      import ZendeskMetadata.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ZendeskMetadata.builder().optionallyWith(oAuthScopes.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.oAuthScopes).build()
    }
    def asReadOnly: ZendeskMetadata.ReadOnly = ZendeskMetadata.wrap(buildAwsValue())
  }
  object ZendeskMetadata {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ZendeskMetadata] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ZendeskMetadata = ZendeskMetadata(oAuthScopesValue.map(value => value))
      def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]]
      def oAuthScopes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.OAuthScope]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("oAuthScopes", oAuthScopesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ZendeskMetadata) extends ZendeskMetadata.ReadOnly {
      override def oAuthScopesValue: scala.Option[List[primitives.OAuthScope]] = scala.Option(impl.oAuthScopes()).map(value => value.asScala.map { item => 
        item: primitives.OAuthScope
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ZendeskMetadata): ReadOnly = new Wrapper(impl)
  }
  case class ZendeskSourceProperties(`object`: primitives.Object) {
    def buildAwsValue(): software.amazon.awssdk.services.appflow.model.ZendeskSourceProperties = {
      import ZendeskSourceProperties.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.appflow.model.ZendeskSourceProperties.builder().`object`(`object`: java.lang.String).build()
    }
    def asReadOnly: ZendeskSourceProperties.ReadOnly = ZendeskSourceProperties.wrap(buildAwsValue())
  }
  object ZendeskSourceProperties {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.appflow.model.ZendeskSourceProperties] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ZendeskSourceProperties = ZendeskSourceProperties(objectValue)
      def objectValue: primitives.Object
      def `object`: ZIO[Any, Nothing, primitives.Object] = ZIO.succeed(objectValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.appflow.model.ZendeskSourceProperties) extends ZendeskSourceProperties.ReadOnly { override def objectValue: primitives.Object = impl.`object`(): primitives.Object }
    def wrap(impl: software.amazon.awssdk.services.appflow.model.ZendeskSourceProperties): ReadOnly = new Wrapper(impl)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy