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

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

package io.github.vigoo.zioaws.codestarnotifications
import scala.jdk.CollectionConverters._
import java.time.Instant
import zio.{ Chunk, ZIO }
import software.amazon.awssdk.core.SdkBytes
package object model {
  object primitives {
    type ClientRequestToken = String
    type CreatedTimestamp = Instant
    type EventTypeId = String
    type EventTypeName = String
    type ForceUnsubscribeAll = Boolean
    type LastModifiedTimestamp = Instant
    type ListEventTypesFilterValue = String
    type ListNotificationRulesFilterValue = String
    type ListTargetsFilterValue = String
    type MaxResults = Int
    type NextToken = String
    type NotificationRuleArn = String
    type NotificationRuleCreatedBy = String
    type NotificationRuleId = String
    type NotificationRuleName = String
    type NotificationRuleResource = String
    type ResourceType = String
    type ServiceName = String
    type TagKey = String
    type TagValue = String
    type TargetAddress = String
    type TargetType = String
  }
  final case class CreateNotificationRuleRequest(name: primitives.NotificationRuleName, eventTypeIds: Iterable[primitives.EventTypeId], resource: primitives.NotificationRuleResource, targets: Iterable[Target], detailType: DetailType, clientRequestToken: scala.Option[primitives.ClientRequestToken] = None, tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None, status: scala.Option[NotificationRuleStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleRequest = {
      import CreateNotificationRuleRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleRequest.builder().name(name: java.lang.String).eventTypeIds(eventTypeIds.map { item => 
        item: java.lang.String
      }.asJavaCollection).resource(resource: java.lang.String).targets(targets.map { item => 
        item.buildAwsValue()
      }.asJavaCollection).detailType(detailType.unwrap).optionallyWith(clientRequestToken.map(value => value: java.lang.String))(_.clientRequestToken).optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).optionallyWith(status.map(value => value.unwrap))(_.status).build()
    }
    def asReadOnly: CreateNotificationRuleRequest.ReadOnly = CreateNotificationRuleRequest.wrap(buildAwsValue())
  }
  object CreateNotificationRuleRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateNotificationRuleRequest = CreateNotificationRuleRequest(nameValue, eventTypeIdsValue, resourceValue, targetsValue.map { item => 
        item.editable
      }, detailTypeValue, clientRequestTokenValue.map(value => value), tagsValue.map(value => value), statusValue.map(value => value))
      def nameValue: primitives.NotificationRuleName
      def eventTypeIdsValue: List[primitives.EventTypeId]
      def resourceValue: primitives.NotificationRuleResource
      def targetsValue: List[Target.ReadOnly]
      def detailTypeValue: DetailType
      def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken]
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def statusValue: scala.Option[NotificationRuleStatus]
      def name: ZIO[Any, Nothing, primitives.NotificationRuleName] = ZIO.succeed(nameValue)
      def eventTypeIds: ZIO[Any, Nothing, List[primitives.EventTypeId]] = ZIO.succeed(eventTypeIdsValue)
      def resource: ZIO[Any, Nothing, primitives.NotificationRuleResource] = ZIO.succeed(resourceValue)
      def targets: ZIO[Any, Nothing, List[Target.ReadOnly]] = ZIO.succeed(targetsValue)
      def detailType: ZIO[Any, Nothing, DetailType] = ZIO.succeed(detailTypeValue)
      def clientRequestToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientRequestToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientRequestToken", clientRequestTokenValue)
      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 status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NotificationRuleStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleRequest) extends CreateNotificationRuleRequest.ReadOnly {
      override def nameValue: primitives.NotificationRuleName = impl.name(): primitives.NotificationRuleName
      override def eventTypeIdsValue: List[primitives.EventTypeId] = impl.eventTypeIds().asScala.map { item => 
        item: primitives.EventTypeId
      }.toList
      override def resourceValue: primitives.NotificationRuleResource = impl.resource(): primitives.NotificationRuleResource
      override def targetsValue: List[Target.ReadOnly] = impl.targets().asScala.map { item => 
        Target.wrap(item)
      }.toList
      override def detailTypeValue: DetailType = DetailType.wrap(impl.detailType())
      override def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken] = scala.Option(impl.clientRequestToken()).map(value => value: primitives.ClientRequestToken)
      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 statusValue: scala.Option[NotificationRuleStatus] = scala.Option(impl.status()).map(value => NotificationRuleStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleRequest): ReadOnly = new Wrapper(impl)
  }
  final case class CreateNotificationRuleResponse(arn: scala.Option[primitives.NotificationRuleArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleResponse = {
      import CreateNotificationRuleResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleResponse.builder().optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: CreateNotificationRuleResponse.ReadOnly = CreateNotificationRuleResponse.wrap(buildAwsValue())
  }
  object CreateNotificationRuleResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: CreateNotificationRuleResponse = CreateNotificationRuleResponse(arnValue.map(value => value))
      def arnValue: scala.Option[primitives.NotificationRuleArn]
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleResponse) extends CreateNotificationRuleResponse.ReadOnly { override def arnValue: scala.Option[primitives.NotificationRuleArn] = scala.Option(impl.arn()).map(value => value: primitives.NotificationRuleArn) }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.CreateNotificationRuleResponse): ReadOnly = new Wrapper(impl)
  }
  final case class DeleteNotificationRuleRequest(arn: primitives.NotificationRuleArn) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleRequest = {
      import DeleteNotificationRuleRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleRequest.builder().arn(arn: java.lang.String).build()
    }
    def asReadOnly: DeleteNotificationRuleRequest.ReadOnly = DeleteNotificationRuleRequest.wrap(buildAwsValue())
  }
  object DeleteNotificationRuleRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteNotificationRuleRequest = DeleteNotificationRuleRequest(arnValue)
      def arnValue: primitives.NotificationRuleArn
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleRequest) extends DeleteNotificationRuleRequest.ReadOnly { override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleRequest): ReadOnly = new Wrapper(impl)
  }
  final case class DeleteNotificationRuleResponse(arn: scala.Option[primitives.NotificationRuleArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleResponse = {
      import DeleteNotificationRuleResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleResponse.builder().optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: DeleteNotificationRuleResponse.ReadOnly = DeleteNotificationRuleResponse.wrap(buildAwsValue())
  }
  object DeleteNotificationRuleResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteNotificationRuleResponse = DeleteNotificationRuleResponse(arnValue.map(value => value))
      def arnValue: scala.Option[primitives.NotificationRuleArn]
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleResponse) extends DeleteNotificationRuleResponse.ReadOnly { override def arnValue: scala.Option[primitives.NotificationRuleArn] = scala.Option(impl.arn()).map(value => value: primitives.NotificationRuleArn) }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteNotificationRuleResponse): ReadOnly = new Wrapper(impl)
  }
  final case class DeleteTargetRequest(targetAddress: primitives.TargetAddress, forceUnsubscribeAll: scala.Option[primitives.ForceUnsubscribeAll] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetRequest = {
      import DeleteTargetRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetRequest.builder().targetAddress(targetAddress: java.lang.String).optionallyWith(forceUnsubscribeAll.map(value => value: java.lang.Boolean))(_.forceUnsubscribeAll).build()
    }
    def asReadOnly: DeleteTargetRequest.ReadOnly = DeleteTargetRequest.wrap(buildAwsValue())
  }
  object DeleteTargetRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DeleteTargetRequest = DeleteTargetRequest(targetAddressValue, forceUnsubscribeAllValue.map(value => value))
      def targetAddressValue: primitives.TargetAddress
      def forceUnsubscribeAllValue: scala.Option[primitives.ForceUnsubscribeAll]
      def targetAddress: ZIO[Any, Nothing, primitives.TargetAddress] = ZIO.succeed(targetAddressValue)
      def forceUnsubscribeAll: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ForceUnsubscribeAll] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("forceUnsubscribeAll", forceUnsubscribeAllValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetRequest) extends DeleteTargetRequest.ReadOnly {
      override def targetAddressValue: primitives.TargetAddress = impl.targetAddress(): primitives.TargetAddress
      override def forceUnsubscribeAllValue: scala.Option[primitives.ForceUnsubscribeAll] = scala.Option(impl.forceUnsubscribeAll()).map(value => value: primitives.ForceUnsubscribeAll)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetRequest): ReadOnly = new Wrapper(impl)
  }
  final case class DeleteTargetResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetResponse = {
      import DeleteTargetResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetResponse.builder().build()
    }
    def asReadOnly: DeleteTargetResponse.ReadOnly = DeleteTargetResponse.wrap(buildAwsValue())
  }
  object DeleteTargetResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: DeleteTargetResponse = DeleteTargetResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetResponse) extends DeleteTargetResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.DeleteTargetResponse): ReadOnly = new Wrapper(impl)
  }
  final case class DescribeNotificationRuleRequest(arn: primitives.NotificationRuleArn) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleRequest = {
      import DescribeNotificationRuleRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleRequest.builder().arn(arn: java.lang.String).build()
    }
    def asReadOnly: DescribeNotificationRuleRequest.ReadOnly = DescribeNotificationRuleRequest.wrap(buildAwsValue())
  }
  object DescribeNotificationRuleRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeNotificationRuleRequest = DescribeNotificationRuleRequest(arnValue)
      def arnValue: primitives.NotificationRuleArn
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleRequest) extends DescribeNotificationRuleRequest.ReadOnly { override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleRequest): ReadOnly = new Wrapper(impl)
  }
  final case class DescribeNotificationRuleResponse(arn: primitives.NotificationRuleArn, name: scala.Option[primitives.NotificationRuleName] = None, eventTypes: scala.Option[Iterable[EventTypeSummary]] = None, resource: scala.Option[primitives.NotificationRuleResource] = None, targets: scala.Option[Iterable[TargetSummary]] = None, detailType: scala.Option[DetailType] = None, createdBy: scala.Option[primitives.NotificationRuleCreatedBy] = None, status: scala.Option[NotificationRuleStatus] = None, createdTimestamp: scala.Option[primitives.CreatedTimestamp] = None, lastModifiedTimestamp: scala.Option[primitives.LastModifiedTimestamp] = None, tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleResponse = {
      import DescribeNotificationRuleResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleResponse.builder().arn(arn: java.lang.String).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(eventTypes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.eventTypes).optionallyWith(resource.map(value => value: java.lang.String))(_.resource).optionallyWith(targets.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.targets).optionallyWith(detailType.map(value => value.unwrap))(_.detailType).optionallyWith(createdBy.map(value => value: java.lang.String))(_.createdBy).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(createdTimestamp.map(value => value: java.time.Instant))(_.createdTimestamp).optionallyWith(lastModifiedTimestamp.map(value => value: java.time.Instant))(_.lastModifiedTimestamp).optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).build()
    }
    def asReadOnly: DescribeNotificationRuleResponse.ReadOnly = DescribeNotificationRuleResponse.wrap(buildAwsValue())
  }
  object DescribeNotificationRuleResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.DescribeNotificationRuleResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: DescribeNotificationRuleResponse = DescribeNotificationRuleResponse(arnValue, nameValue.map(value => value), eventTypesValue.map(value => value.map { item => 
        item.editable
      }), resourceValue.map(value => value), targetsValue.map(value => value.map { item => 
        item.editable
      }), detailTypeValue.map(value => value), createdByValue.map(value => value), statusValue.map(value => value), createdTimestampValue.map(value => value), lastModifiedTimestampValue.map(value => value), tagsValue.map(value => value))
      def arnValue: primitives.NotificationRuleArn
      def nameValue: scala.Option[primitives.NotificationRuleName]
      def eventTypesValue: scala.Option[List[EventTypeSummary.ReadOnly]]
      def resourceValue: scala.Option[primitives.NotificationRuleResource]
      def targetsValue: scala.Option[List[TargetSummary.ReadOnly]]
      def detailTypeValue: scala.Option[DetailType]
      def createdByValue: scala.Option[primitives.NotificationRuleCreatedBy]
      def statusValue: scala.Option[NotificationRuleStatus]
      def createdTimestampValue: scala.Option[primitives.CreatedTimestamp]
      def lastModifiedTimestampValue: scala.Option[primitives.LastModifiedTimestamp]
      def tagsValue: scala.Option[Map[primitives.TagKey, primitives.TagValue]]
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def eventTypes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[EventTypeSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventTypes", eventTypesValue)
      def resource: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleResource] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resource", resourceValue)
      def targets: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[TargetSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targets", targetsValue)
      def detailType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DetailType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("detailType", detailTypeValue)
      def createdBy: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleCreatedBy] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdBy", createdByValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NotificationRuleStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def createdTimestamp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.CreatedTimestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("createdTimestamp", createdTimestampValue)
      def lastModifiedTimestamp: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.LastModifiedTimestamp] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("lastModifiedTimestamp", lastModifiedTimestampValue)
      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.codestarnotifications.model.DescribeNotificationRuleResponse) extends DescribeNotificationRuleResponse.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      override def nameValue: scala.Option[primitives.NotificationRuleName] = scala.Option(impl.name()).map(value => value: primitives.NotificationRuleName)
      override def eventTypesValue: scala.Option[List[EventTypeSummary.ReadOnly]] = scala.Option(impl.eventTypes()).map(value => value.asScala.map { item => 
        EventTypeSummary.wrap(item)
      }.toList)
      override def resourceValue: scala.Option[primitives.NotificationRuleResource] = scala.Option(impl.resource()).map(value => value: primitives.NotificationRuleResource)
      override def targetsValue: scala.Option[List[TargetSummary.ReadOnly]] = scala.Option(impl.targets()).map(value => value.asScala.map { item => 
        TargetSummary.wrap(item)
      }.toList)
      override def detailTypeValue: scala.Option[DetailType] = scala.Option(impl.detailType()).map(value => DetailType.wrap(value))
      override def createdByValue: scala.Option[primitives.NotificationRuleCreatedBy] = scala.Option(impl.createdBy()).map(value => value: primitives.NotificationRuleCreatedBy)
      override def statusValue: scala.Option[NotificationRuleStatus] = scala.Option(impl.status()).map(value => NotificationRuleStatus.wrap(value))
      override def createdTimestampValue: scala.Option[primitives.CreatedTimestamp] = scala.Option(impl.createdTimestamp()).map(value => value: primitives.CreatedTimestamp)
      override def lastModifiedTimestampValue: scala.Option[primitives.LastModifiedTimestamp] = scala.Option(impl.lastModifiedTimestamp()).map(value => value: primitives.LastModifiedTimestamp)
      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.codestarnotifications.model.DescribeNotificationRuleResponse): ReadOnly = new Wrapper(impl)
  }
  sealed trait DetailType { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.DetailType }
  object DetailType {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.DetailType): DetailType = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.DetailType.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.DetailType.BASIC => BASIC
      case software.amazon.awssdk.services.codestarnotifications.model.DetailType.FULL => FULL
    }
    final case object unknownToSdkVersion extends DetailType { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.DetailType = software.amazon.awssdk.services.codestarnotifications.model.DetailType.UNKNOWN_TO_SDK_VERSION }
    final case object BASIC extends DetailType { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.DetailType = software.amazon.awssdk.services.codestarnotifications.model.DetailType.BASIC }
    final case object FULL extends DetailType { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.DetailType = software.amazon.awssdk.services.codestarnotifications.model.DetailType.FULL }
  }
  type EventTypeBatch = List[EventTypeSummary]
  type EventTypeIds = List[primitives.EventTypeId]
  final case class EventTypeSummary(eventTypeId: scala.Option[primitives.EventTypeId] = None, serviceName: scala.Option[primitives.ServiceName] = None, eventTypeName: scala.Option[primitives.EventTypeName] = None, resourceType: scala.Option[primitives.ResourceType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.EventTypeSummary = {
      import EventTypeSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.EventTypeSummary.builder().optionallyWith(eventTypeId.map(value => value: java.lang.String))(_.eventTypeId).optionallyWith(serviceName.map(value => value: java.lang.String))(_.serviceName).optionallyWith(eventTypeName.map(value => value: java.lang.String))(_.eventTypeName).optionallyWith(resourceType.map(value => value: java.lang.String))(_.resourceType).build()
    }
    def asReadOnly: EventTypeSummary.ReadOnly = EventTypeSummary.wrap(buildAwsValue())
  }
  object EventTypeSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.EventTypeSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: EventTypeSummary = EventTypeSummary(eventTypeIdValue.map(value => value), serviceNameValue.map(value => value), eventTypeNameValue.map(value => value), resourceTypeValue.map(value => value))
      def eventTypeIdValue: scala.Option[primitives.EventTypeId]
      def serviceNameValue: scala.Option[primitives.ServiceName]
      def eventTypeNameValue: scala.Option[primitives.EventTypeName]
      def resourceTypeValue: scala.Option[primitives.ResourceType]
      def eventTypeId: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventTypeId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventTypeId", eventTypeIdValue)
      def serviceName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ServiceName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("serviceName", serviceNameValue)
      def eventTypeName: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.EventTypeName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventTypeName", eventTypeNameValue)
      def resourceType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ResourceType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("resourceType", resourceTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.EventTypeSummary) extends EventTypeSummary.ReadOnly {
      override def eventTypeIdValue: scala.Option[primitives.EventTypeId] = scala.Option(impl.eventTypeId()).map(value => value: primitives.EventTypeId)
      override def serviceNameValue: scala.Option[primitives.ServiceName] = scala.Option(impl.serviceName()).map(value => value: primitives.ServiceName)
      override def eventTypeNameValue: scala.Option[primitives.EventTypeName] = scala.Option(impl.eventTypeName()).map(value => value: primitives.EventTypeName)
      override def resourceTypeValue: scala.Option[primitives.ResourceType] = scala.Option(impl.resourceType()).map(value => value: primitives.ResourceType)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.EventTypeSummary): ReadOnly = new Wrapper(impl)
  }
  final case class ListEventTypesFilter(name: ListEventTypesFilterName, value: primitives.ListEventTypesFilterValue) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilter = {
      import ListEventTypesFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilter.builder().name(name.unwrap).value(value: java.lang.String).build()
    }
    def asReadOnly: ListEventTypesFilter.ReadOnly = ListEventTypesFilter.wrap(buildAwsValue())
  }
  object ListEventTypesFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListEventTypesFilter = ListEventTypesFilter(nameValue, valueValue)
      def nameValue: ListEventTypesFilterName
      def valueValue: primitives.ListEventTypesFilterValue
      def name: ZIO[Any, Nothing, ListEventTypesFilterName] = ZIO.succeed(nameValue)
      def value: ZIO[Any, Nothing, primitives.ListEventTypesFilterValue] = ZIO.succeed(valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilter) extends ListEventTypesFilter.ReadOnly {
      override def nameValue: ListEventTypesFilterName = ListEventTypesFilterName.wrap(impl.name())
      override def valueValue: primitives.ListEventTypesFilterValue = impl.value(): primitives.ListEventTypesFilterValue
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilter): ReadOnly = new Wrapper(impl)
  }
  sealed trait ListEventTypesFilterName { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName }
  object ListEventTypesFilterName {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName): ListEventTypesFilterName = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.RESOURCE_TYPE => RESOURCE_TYPE
      case software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.SERVICE_NAME => SERVICE_NAME
    }
    final case object unknownToSdkVersion extends ListEventTypesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.UNKNOWN_TO_SDK_VERSION }
    final case object RESOURCE_TYPE extends ListEventTypesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.RESOURCE_TYPE }
    final case object SERVICE_NAME extends ListEventTypesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesFilterName.SERVICE_NAME }
  }
  type ListEventTypesFilters = List[ListEventTypesFilter]
  final case class ListEventTypesRequest(filters: scala.Option[Iterable[ListEventTypesFilter]] = None, nextToken: scala.Option[primitives.NextToken] = None, maxResults: scala.Option[primitives.MaxResults] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesRequest = {
      import ListEventTypesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesRequest.builder().optionallyWith(filters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.filters).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).build()
    }
    def asReadOnly: ListEventTypesRequest.ReadOnly = ListEventTypesRequest.wrap(buildAwsValue())
  }
  object ListEventTypesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListEventTypesRequest = ListEventTypesRequest(filtersValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value), maxResultsValue.map(value => value))
      def filtersValue: scala.Option[List[ListEventTypesFilter.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def filters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ListEventTypesFilter.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filters", filtersValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesRequest) extends ListEventTypesRequest.ReadOnly {
      override def filtersValue: scala.Option[List[ListEventTypesFilter.ReadOnly]] = scala.Option(impl.filters()).map(value => value.asScala.map { item => 
        ListEventTypesFilter.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesRequest): ReadOnly = new Wrapper(impl)
  }
  final case class ListEventTypesResponse(eventTypes: scala.Option[Iterable[EventTypeSummary]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesResponse = {
      import ListEventTypesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesResponse.builder().optionallyWith(eventTypes.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.eventTypes).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListEventTypesResponse.ReadOnly = ListEventTypesResponse.wrap(buildAwsValue())
  }
  object ListEventTypesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListEventTypesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListEventTypesResponse = ListEventTypesResponse(eventTypesValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def eventTypesValue: scala.Option[List[EventTypeSummary.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def eventTypes: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[EventTypeSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventTypes", eventTypesValue)
      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.codestarnotifications.model.ListEventTypesResponse) extends ListEventTypesResponse.ReadOnly {
      override def eventTypesValue: scala.Option[List[EventTypeSummary.ReadOnly]] = scala.Option(impl.eventTypes()).map(value => value.asScala.map { item => 
        EventTypeSummary.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.codestarnotifications.model.ListEventTypesResponse): ReadOnly = new Wrapper(impl)
  }
  final case class ListNotificationRulesFilter(name: ListNotificationRulesFilterName, value: primitives.ListNotificationRulesFilterValue) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilter = {
      import ListNotificationRulesFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilter.builder().name(name.unwrap).value(value: java.lang.String).build()
    }
    def asReadOnly: ListNotificationRulesFilter.ReadOnly = ListNotificationRulesFilter.wrap(buildAwsValue())
  }
  object ListNotificationRulesFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListNotificationRulesFilter = ListNotificationRulesFilter(nameValue, valueValue)
      def nameValue: ListNotificationRulesFilterName
      def valueValue: primitives.ListNotificationRulesFilterValue
      def name: ZIO[Any, Nothing, ListNotificationRulesFilterName] = ZIO.succeed(nameValue)
      def value: ZIO[Any, Nothing, primitives.ListNotificationRulesFilterValue] = ZIO.succeed(valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilter) extends ListNotificationRulesFilter.ReadOnly {
      override def nameValue: ListNotificationRulesFilterName = ListNotificationRulesFilterName.wrap(impl.name())
      override def valueValue: primitives.ListNotificationRulesFilterValue = impl.value(): primitives.ListNotificationRulesFilterValue
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilter): ReadOnly = new Wrapper(impl)
  }
  sealed trait ListNotificationRulesFilterName { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName }
  object ListNotificationRulesFilterName {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName): ListNotificationRulesFilterName = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.EVENT_TYPE_ID => EVENT_TYPE_ID
      case software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.CREATED_BY => CREATED_BY
      case software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.RESOURCE => RESOURCE
      case software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.TARGET_ADDRESS => TARGET_ADDRESS
    }
    final case object unknownToSdkVersion extends ListNotificationRulesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.UNKNOWN_TO_SDK_VERSION }
    final case object EVENT_TYPE_ID extends ListNotificationRulesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.EVENT_TYPE_ID }
    final case object CREATED_BY extends ListNotificationRulesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.CREATED_BY }
    final case object RESOURCE extends ListNotificationRulesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.RESOURCE }
    final case object TARGET_ADDRESS extends ListNotificationRulesFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesFilterName.TARGET_ADDRESS }
  }
  type ListNotificationRulesFilters = List[ListNotificationRulesFilter]
  final case class ListNotificationRulesRequest(filters: scala.Option[Iterable[ListNotificationRulesFilter]] = None, nextToken: scala.Option[primitives.NextToken] = None, maxResults: scala.Option[primitives.MaxResults] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesRequest = {
      import ListNotificationRulesRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesRequest.builder().optionallyWith(filters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.filters).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).build()
    }
    def asReadOnly: ListNotificationRulesRequest.ReadOnly = ListNotificationRulesRequest.wrap(buildAwsValue())
  }
  object ListNotificationRulesRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListNotificationRulesRequest = ListNotificationRulesRequest(filtersValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value), maxResultsValue.map(value => value))
      def filtersValue: scala.Option[List[ListNotificationRulesFilter.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def filters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ListNotificationRulesFilter.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filters", filtersValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesRequest) extends ListNotificationRulesRequest.ReadOnly {
      override def filtersValue: scala.Option[List[ListNotificationRulesFilter.ReadOnly]] = scala.Option(impl.filters()).map(value => value.asScala.map { item => 
        ListNotificationRulesFilter.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesRequest): ReadOnly = new Wrapper(impl)
  }
  final case class ListNotificationRulesResponse(nextToken: scala.Option[primitives.NextToken] = None, notificationRules: scala.Option[Iterable[NotificationRuleSummary]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesResponse = {
      import ListNotificationRulesResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesResponse.builder().optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).optionallyWith(notificationRules.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.notificationRules).build()
    }
    def asReadOnly: ListNotificationRulesResponse.ReadOnly = ListNotificationRulesResponse.wrap(buildAwsValue())
  }
  object ListNotificationRulesResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListNotificationRulesResponse = ListNotificationRulesResponse(nextTokenValue.map(value => value), notificationRulesValue.map(value => value.map { item => 
        item.editable
      }))
      def nextTokenValue: scala.Option[primitives.NextToken]
      def notificationRulesValue: scala.Option[List[NotificationRuleSummary.ReadOnly]]
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
      def notificationRules: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[NotificationRuleSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("notificationRules", notificationRulesValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesResponse) extends ListNotificationRulesResponse.ReadOnly {
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
      override def notificationRulesValue: scala.Option[List[NotificationRuleSummary.ReadOnly]] = scala.Option(impl.notificationRules()).map(value => value.asScala.map { item => 
        NotificationRuleSummary.wrap(item)
      }.toList)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListNotificationRulesResponse): ReadOnly = new Wrapper(impl)
  }
  final case class ListTagsForResourceRequest(arn: primitives.NotificationRuleArn) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListTagsForResourceRequest = {
      import ListTagsForResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListTagsForResourceRequest.builder().arn(arn: 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.codestarnotifications.model.ListTagsForResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTagsForResourceRequest = ListTagsForResourceRequest(arnValue)
      def arnValue: primitives.NotificationRuleArn
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTagsForResourceRequest) extends ListTagsForResourceRequest.ReadOnly { override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTagsForResourceRequest): ReadOnly = new Wrapper(impl)
  }
  final case class ListTagsForResourceResponse(tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListTagsForResourceResponse = {
      import ListTagsForResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.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.codestarnotifications.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.codestarnotifications.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.codestarnotifications.model.ListTagsForResourceResponse): ReadOnly = new Wrapper(impl)
  }
  final case class ListTargetsFilter(name: ListTargetsFilterName, value: primitives.ListTargetsFilterValue) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilter = {
      import ListTargetsFilter.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilter.builder().name(name.unwrap).value(value: java.lang.String).build()
    }
    def asReadOnly: ListTargetsFilter.ReadOnly = ListTargetsFilter.wrap(buildAwsValue())
  }
  object ListTargetsFilter {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilter] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTargetsFilter = ListTargetsFilter(nameValue, valueValue)
      def nameValue: ListTargetsFilterName
      def valueValue: primitives.ListTargetsFilterValue
      def name: ZIO[Any, Nothing, ListTargetsFilterName] = ZIO.succeed(nameValue)
      def value: ZIO[Any, Nothing, primitives.ListTargetsFilterValue] = ZIO.succeed(valueValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilter) extends ListTargetsFilter.ReadOnly {
      override def nameValue: ListTargetsFilterName = ListTargetsFilterName.wrap(impl.name())
      override def valueValue: primitives.ListTargetsFilterValue = impl.value(): primitives.ListTargetsFilterValue
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilter): ReadOnly = new Wrapper(impl)
  }
  sealed trait ListTargetsFilterName { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName }
  object ListTargetsFilterName {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName): ListTargetsFilterName = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_TYPE => TARGET_TYPE
      case software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_ADDRESS => TARGET_ADDRESS
      case software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_STATUS => TARGET_STATUS
    }
    final case object unknownToSdkVersion extends ListTargetsFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.UNKNOWN_TO_SDK_VERSION }
    final case object TARGET_TYPE extends ListTargetsFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_TYPE }
    final case object TARGET_ADDRESS extends ListTargetsFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_ADDRESS }
    final case object TARGET_STATUS extends ListTargetsFilterName { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName = software.amazon.awssdk.services.codestarnotifications.model.ListTargetsFilterName.TARGET_STATUS }
  }
  type ListTargetsFilters = List[ListTargetsFilter]
  final case class ListTargetsRequest(filters: scala.Option[Iterable[ListTargetsFilter]] = None, nextToken: scala.Option[primitives.NextToken] = None, maxResults: scala.Option[primitives.MaxResults] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListTargetsRequest = {
      import ListTargetsRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListTargetsRequest.builder().optionallyWith(filters.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.filters).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).optionallyWith(maxResults.map(value => value: java.lang.Integer))(_.maxResults).build()
    }
    def asReadOnly: ListTargetsRequest.ReadOnly = ListTargetsRequest.wrap(buildAwsValue())
  }
  object ListTargetsRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListTargetsRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTargetsRequest = ListTargetsRequest(filtersValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value), maxResultsValue.map(value => value))
      def filtersValue: scala.Option[List[ListTargetsFilter.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def maxResultsValue: scala.Option[primitives.MaxResults]
      def filters: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[ListTargetsFilter.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("filters", filtersValue)
      def nextToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NextToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("nextToken", nextTokenValue)
      def maxResults: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.MaxResults] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("maxResults", maxResultsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsRequest) extends ListTargetsRequest.ReadOnly {
      override def filtersValue: scala.Option[List[ListTargetsFilter.ReadOnly]] = scala.Option(impl.filters()).map(value => value.asScala.map { item => 
        ListTargetsFilter.wrap(item)
      }.toList)
      override def nextTokenValue: scala.Option[primitives.NextToken] = scala.Option(impl.nextToken()).map(value => value: primitives.NextToken)
      override def maxResultsValue: scala.Option[primitives.MaxResults] = scala.Option(impl.maxResults()).map(value => value: primitives.MaxResults)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.ListTargetsRequest): ReadOnly = new Wrapper(impl)
  }
  final case class ListTargetsResponse(targets: scala.Option[Iterable[TargetSummary]] = None, nextToken: scala.Option[primitives.NextToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.ListTargetsResponse = {
      import ListTargetsResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.ListTargetsResponse.builder().optionallyWith(targets.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.targets).optionallyWith(nextToken.map(value => value: java.lang.String))(_.nextToken).build()
    }
    def asReadOnly: ListTargetsResponse.ReadOnly = ListTargetsResponse.wrap(buildAwsValue())
  }
  object ListTargetsResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.ListTargetsResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: ListTargetsResponse = ListTargetsResponse(targetsValue.map(value => value.map { item => 
        item.editable
      }), nextTokenValue.map(value => value))
      def targetsValue: scala.Option[List[TargetSummary.ReadOnly]]
      def nextTokenValue: scala.Option[primitives.NextToken]
      def targets: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[TargetSummary.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targets", targetsValue)
      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.codestarnotifications.model.ListTargetsResponse) extends ListTargetsResponse.ReadOnly {
      override def targetsValue: scala.Option[List[TargetSummary.ReadOnly]] = scala.Option(impl.targets()).map(value => value.asScala.map { item => 
        TargetSummary.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.codestarnotifications.model.ListTargetsResponse): ReadOnly = new Wrapper(impl)
  }
  type NotificationRuleBatch = List[NotificationRuleSummary]
  sealed trait NotificationRuleStatus { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus }
  object NotificationRuleStatus {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus): NotificationRuleStatus = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.ENABLED => ENABLED
      case software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.DISABLED => DISABLED
    }
    final case object unknownToSdkVersion extends NotificationRuleStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus = software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.UNKNOWN_TO_SDK_VERSION }
    final case object ENABLED extends NotificationRuleStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus = software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.ENABLED }
    final case object DISABLED extends NotificationRuleStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus = software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleStatus.DISABLED }
  }
  final case class NotificationRuleSummary(id: scala.Option[primitives.NotificationRuleId] = None, arn: scala.Option[primitives.NotificationRuleArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleSummary = {
      import NotificationRuleSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleSummary.builder().optionallyWith(id.map(value => value: java.lang.String))(_.id).optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: NotificationRuleSummary.ReadOnly = NotificationRuleSummary.wrap(buildAwsValue())
  }
  object NotificationRuleSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: NotificationRuleSummary = NotificationRuleSummary(idValue.map(value => value), arnValue.map(value => value))
      def idValue: scala.Option[primitives.NotificationRuleId]
      def arnValue: scala.Option[primitives.NotificationRuleArn]
      def id: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleId] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("id", idValue)
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleSummary) extends NotificationRuleSummary.ReadOnly {
      override def idValue: scala.Option[primitives.NotificationRuleId] = scala.Option(impl.id()).map(value => value: primitives.NotificationRuleId)
      override def arnValue: scala.Option[primitives.NotificationRuleArn] = scala.Option(impl.arn()).map(value => value: primitives.NotificationRuleArn)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.NotificationRuleSummary): ReadOnly = new Wrapper(impl)
  }
  final case class SubscribeRequest(arn: primitives.NotificationRuleArn, target: Target, clientRequestToken: scala.Option[primitives.ClientRequestToken] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.SubscribeRequest = {
      import SubscribeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.SubscribeRequest.builder().arn(arn: java.lang.String).target(target.buildAwsValue()).optionallyWith(clientRequestToken.map(value => value: java.lang.String))(_.clientRequestToken).build()
    }
    def asReadOnly: SubscribeRequest.ReadOnly = SubscribeRequest.wrap(buildAwsValue())
  }
  object SubscribeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.SubscribeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SubscribeRequest = SubscribeRequest(arnValue, targetValue.editable, clientRequestTokenValue.map(value => value))
      def arnValue: primitives.NotificationRuleArn
      def targetValue: Target.ReadOnly
      def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken]
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def target: ZIO[Any, Nothing, Target.ReadOnly] = ZIO.succeed(targetValue)
      def clientRequestToken: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.ClientRequestToken] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("clientRequestToken", clientRequestTokenValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.SubscribeRequest) extends SubscribeRequest.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      override def targetValue: Target.ReadOnly = Target.wrap(impl.target())
      override def clientRequestTokenValue: scala.Option[primitives.ClientRequestToken] = scala.Option(impl.clientRequestToken()).map(value => value: primitives.ClientRequestToken)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.SubscribeRequest): ReadOnly = new Wrapper(impl)
  }
  final case class SubscribeResponse(arn: scala.Option[primitives.NotificationRuleArn] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.SubscribeResponse = {
      import SubscribeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.SubscribeResponse.builder().optionallyWith(arn.map(value => value: java.lang.String))(_.arn).build()
    }
    def asReadOnly: SubscribeResponse.ReadOnly = SubscribeResponse.wrap(buildAwsValue())
  }
  object SubscribeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.SubscribeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: SubscribeResponse = SubscribeResponse(arnValue.map(value => value))
      def arnValue: scala.Option[primitives.NotificationRuleArn]
      def arn: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleArn] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("arn", arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.SubscribeResponse) extends SubscribeResponse.ReadOnly { override def arnValue: scala.Option[primitives.NotificationRuleArn] = scala.Option(impl.arn()).map(value => value: primitives.NotificationRuleArn) }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.SubscribeResponse): ReadOnly = new Wrapper(impl)
  }
  type TagKeys = List[primitives.TagKey]
  final case class TagResourceRequest(arn: primitives.NotificationRuleArn, tags: Map[primitives.TagKey, primitives.TagValue]) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.TagResourceRequest = {
      import TagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.TagResourceRequest.builder().arn(arn: 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.codestarnotifications.model.TagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceRequest = TagResourceRequest(arnValue, tagsValue)
      def arnValue: primitives.NotificationRuleArn
      def tagsValue: Map[primitives.TagKey, primitives.TagValue]
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def tags: ZIO[Any, Nothing, Map[primitives.TagKey, primitives.TagValue]] = ZIO.succeed(tagsValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.TagResourceRequest) extends TagResourceRequest.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      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.codestarnotifications.model.TagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  final case class TagResourceResponse(tags: scala.Option[Map[primitives.TagKey, primitives.TagValue]] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.TagResourceResponse = {
      import TagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.TagResourceResponse.builder().optionallyWith(tags.map(value => value.map({
        case (key, value) =>
          (key: java.lang.String) -> (value: java.lang.String)
      }).asJava))(_.tags).build()
    }
    def asReadOnly: TagResourceResponse.ReadOnly = TagResourceResponse.wrap(buildAwsValue())
  }
  object TagResourceResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.TagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TagResourceResponse = TagResourceResponse(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.codestarnotifications.model.TagResourceResponse) extends TagResourceResponse.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.codestarnotifications.model.TagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  type Tags = Map[primitives.TagKey, primitives.TagValue]
  final case class Target(targetType: scala.Option[primitives.TargetType] = None, targetAddress: scala.Option[primitives.TargetAddress] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.Target = {
      import Target.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.Target.builder().optionallyWith(targetType.map(value => value: java.lang.String))(_.targetType).optionallyWith(targetAddress.map(value => value: java.lang.String))(_.targetAddress).build()
    }
    def asReadOnly: Target.ReadOnly = Target.wrap(buildAwsValue())
  }
  object Target {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.Target] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: Target = Target(targetTypeValue.map(value => value), targetAddressValue.map(value => value))
      def targetTypeValue: scala.Option[primitives.TargetType]
      def targetAddressValue: scala.Option[primitives.TargetAddress]
      def targetType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TargetType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetType", targetTypeValue)
      def targetAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TargetAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetAddress", targetAddressValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.Target) extends Target.ReadOnly {
      override def targetTypeValue: scala.Option[primitives.TargetType] = scala.Option(impl.targetType()).map(value => value: primitives.TargetType)
      override def targetAddressValue: scala.Option[primitives.TargetAddress] = scala.Option(impl.targetAddress()).map(value => value: primitives.TargetAddress)
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.Target): ReadOnly = new Wrapper(impl)
  }
  sealed trait TargetStatus { def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus }
  object TargetStatus {
    def wrap(value: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus): TargetStatus = value match {
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.UNKNOWN_TO_SDK_VERSION => unknownToSdkVersion
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.PENDING => PENDING
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.ACTIVE => ACTIVE
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.UNREACHABLE => UNREACHABLE
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.INACTIVE => INACTIVE
      case software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.DEACTIVATED => DEACTIVATED
    }
    final case object unknownToSdkVersion extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.UNKNOWN_TO_SDK_VERSION }
    final case object PENDING extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.PENDING }
    final case object ACTIVE extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.ACTIVE }
    final case object UNREACHABLE extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.UNREACHABLE }
    final case object INACTIVE extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.INACTIVE }
    final case object DEACTIVATED extends TargetStatus { override def unwrap: software.amazon.awssdk.services.codestarnotifications.model.TargetStatus = software.amazon.awssdk.services.codestarnotifications.model.TargetStatus.DEACTIVATED }
  }
  final case class TargetSummary(targetAddress: scala.Option[primitives.TargetAddress] = None, targetType: scala.Option[primitives.TargetType] = None, targetStatus: scala.Option[TargetStatus] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.TargetSummary = {
      import TargetSummary.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.TargetSummary.builder().optionallyWith(targetAddress.map(value => value: java.lang.String))(_.targetAddress).optionallyWith(targetType.map(value => value: java.lang.String))(_.targetType).optionallyWith(targetStatus.map(value => value.unwrap))(_.targetStatus).build()
    }
    def asReadOnly: TargetSummary.ReadOnly = TargetSummary.wrap(buildAwsValue())
  }
  object TargetSummary {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.TargetSummary] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: TargetSummary = TargetSummary(targetAddressValue.map(value => value), targetTypeValue.map(value => value), targetStatusValue.map(value => value))
      def targetAddressValue: scala.Option[primitives.TargetAddress]
      def targetTypeValue: scala.Option[primitives.TargetType]
      def targetStatusValue: scala.Option[TargetStatus]
      def targetAddress: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TargetAddress] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetAddress", targetAddressValue)
      def targetType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.TargetType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetType", targetTypeValue)
      def targetStatus: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, TargetStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targetStatus", targetStatusValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.TargetSummary) extends TargetSummary.ReadOnly {
      override def targetAddressValue: scala.Option[primitives.TargetAddress] = scala.Option(impl.targetAddress()).map(value => value: primitives.TargetAddress)
      override def targetTypeValue: scala.Option[primitives.TargetType] = scala.Option(impl.targetType()).map(value => value: primitives.TargetType)
      override def targetStatusValue: scala.Option[TargetStatus] = scala.Option(impl.targetStatus()).map(value => TargetStatus.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.TargetSummary): ReadOnly = new Wrapper(impl)
  }
  type Targets = List[Target]
  type TargetsBatch = List[TargetSummary]
  final case class UnsubscribeRequest(arn: primitives.NotificationRuleArn, targetAddress: primitives.TargetAddress) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeRequest = {
      import UnsubscribeRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeRequest.builder().arn(arn: java.lang.String).targetAddress(targetAddress: java.lang.String).build()
    }
    def asReadOnly: UnsubscribeRequest.ReadOnly = UnsubscribeRequest.wrap(buildAwsValue())
  }
  object UnsubscribeRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UnsubscribeRequest = UnsubscribeRequest(arnValue, targetAddressValue)
      def arnValue: primitives.NotificationRuleArn
      def targetAddressValue: primitives.TargetAddress
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def targetAddress: ZIO[Any, Nothing, primitives.TargetAddress] = ZIO.succeed(targetAddressValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeRequest) extends UnsubscribeRequest.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      override def targetAddressValue: primitives.TargetAddress = impl.targetAddress(): primitives.TargetAddress
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeRequest): ReadOnly = new Wrapper(impl)
  }
  final case class UnsubscribeResponse(arn: primitives.NotificationRuleArn) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeResponse = {
      import UnsubscribeResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeResponse.builder().arn(arn: java.lang.String).build()
    }
    def asReadOnly: UnsubscribeResponse.ReadOnly = UnsubscribeResponse.wrap(buildAwsValue())
  }
  object UnsubscribeResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UnsubscribeResponse = UnsubscribeResponse(arnValue)
      def arnValue: primitives.NotificationRuleArn
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeResponse) extends UnsubscribeResponse.ReadOnly { override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UnsubscribeResponse): ReadOnly = new Wrapper(impl)
  }
  final case class UntagResourceRequest(arn: primitives.NotificationRuleArn, tagKeys: Iterable[primitives.TagKey]) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UntagResourceRequest = {
      import UntagResourceRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.UntagResourceRequest.builder().arn(arn: 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.codestarnotifications.model.UntagResourceRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UntagResourceRequest = UntagResourceRequest(arnValue, tagKeysValue)
      def arnValue: primitives.NotificationRuleArn
      def tagKeysValue: List[primitives.TagKey]
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def tagKeys: ZIO[Any, Nothing, List[primitives.TagKey]] = ZIO.succeed(tagKeysValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UntagResourceRequest) extends UntagResourceRequest.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      override def tagKeysValue: List[primitives.TagKey] = impl.tagKeys().asScala.map { item => 
        item: primitives.TagKey
      }.toList
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UntagResourceRequest): ReadOnly = new Wrapper(impl)
  }
  final case class UntagResourceResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UntagResourceResponse = {
      import UntagResourceResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.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.codestarnotifications.model.UntagResourceResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: UntagResourceResponse = UntagResourceResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UntagResourceResponse) extends UntagResourceResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UntagResourceResponse): ReadOnly = new Wrapper(impl)
  }
  final case class UpdateNotificationRuleRequest(arn: primitives.NotificationRuleArn, name: scala.Option[primitives.NotificationRuleName] = None, status: scala.Option[NotificationRuleStatus] = None, eventTypeIds: scala.Option[Iterable[primitives.EventTypeId]] = None, targets: scala.Option[Iterable[Target]] = None, detailType: scala.Option[DetailType] = None) {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleRequest = {
      import UpdateNotificationRuleRequest.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleRequest.builder().arn(arn: java.lang.String).optionallyWith(name.map(value => value: java.lang.String))(_.name).optionallyWith(status.map(value => value.unwrap))(_.status).optionallyWith(eventTypeIds.map(value => value.map { item => 
        item: java.lang.String
      }.asJavaCollection))(_.eventTypeIds).optionallyWith(targets.map(value => value.map { item => 
        item.buildAwsValue()
      }.asJavaCollection))(_.targets).optionallyWith(detailType.map(value => value.unwrap))(_.detailType).build()
    }
    def asReadOnly: UpdateNotificationRuleRequest.ReadOnly = UpdateNotificationRuleRequest.wrap(buildAwsValue())
  }
  object UpdateNotificationRuleRequest {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleRequest] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly {
      def editable: UpdateNotificationRuleRequest = UpdateNotificationRuleRequest(arnValue, nameValue.map(value => value), statusValue.map(value => value), eventTypeIdsValue.map(value => value), targetsValue.map(value => value.map { item => 
        item.editable
      }), detailTypeValue.map(value => value))
      def arnValue: primitives.NotificationRuleArn
      def nameValue: scala.Option[primitives.NotificationRuleName]
      def statusValue: scala.Option[NotificationRuleStatus]
      def eventTypeIdsValue: scala.Option[List[primitives.EventTypeId]]
      def targetsValue: scala.Option[List[Target.ReadOnly]]
      def detailTypeValue: scala.Option[DetailType]
      def arn: ZIO[Any, Nothing, primitives.NotificationRuleArn] = ZIO.succeed(arnValue)
      def name: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, primitives.NotificationRuleName] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("name", nameValue)
      def status: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, NotificationRuleStatus] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("status", statusValue)
      def eventTypeIds: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[primitives.EventTypeId]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("eventTypeIds", eventTypeIdsValue)
      def targets: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, List[Target.ReadOnly]] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("targets", targetsValue)
      def detailType: ZIO[Any, io.github.vigoo.zioaws.core.AwsError, DetailType] = io.github.vigoo.zioaws.core.AwsError.unwrapOptionField("detailType", detailTypeValue)
    }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleRequest) extends UpdateNotificationRuleRequest.ReadOnly {
      override def arnValue: primitives.NotificationRuleArn = impl.arn(): primitives.NotificationRuleArn
      override def nameValue: scala.Option[primitives.NotificationRuleName] = scala.Option(impl.name()).map(value => value: primitives.NotificationRuleName)
      override def statusValue: scala.Option[NotificationRuleStatus] = scala.Option(impl.status()).map(value => NotificationRuleStatus.wrap(value))
      override def eventTypeIdsValue: scala.Option[List[primitives.EventTypeId]] = scala.Option(impl.eventTypeIds()).map(value => value.asScala.map { item => 
        item: primitives.EventTypeId
      }.toList)
      override def targetsValue: scala.Option[List[Target.ReadOnly]] = scala.Option(impl.targets()).map(value => value.asScala.map { item => 
        Target.wrap(item)
      }.toList)
      override def detailTypeValue: scala.Option[DetailType] = scala.Option(impl.detailType()).map(value => DetailType.wrap(value))
    }
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleRequest): ReadOnly = new Wrapper(impl)
  }
  final case class UpdateNotificationRuleResponse() {
    def buildAwsValue(): software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleResponse = {
      import UpdateNotificationRuleResponse.zioAwsBuilderHelper.BuilderOps
      software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleResponse.builder().build()
    }
    def asReadOnly: UpdateNotificationRuleResponse.ReadOnly = UpdateNotificationRuleResponse.wrap(buildAwsValue())
  }
  object UpdateNotificationRuleResponse {
    private lazy val zioAwsBuilderHelper: io.github.vigoo.zioaws.core.BuilderHelper[software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleResponse] = io.github.vigoo.zioaws.core.BuilderHelper.apply
    trait ReadOnly { def editable: UpdateNotificationRuleResponse = UpdateNotificationRuleResponse() }
    private class Wrapper(impl: software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleResponse) extends UpdateNotificationRuleResponse.ReadOnly
    def wrap(impl: software.amazon.awssdk.services.codestarnotifications.model.UpdateNotificationRuleResponse): ReadOnly = new Wrapper(impl)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy