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

io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.scala Maven / Gradle / Ivy

// Generated by the Scala Plugin for the Protocol Buffer Compiler.
// Do not edit!
//
// Protofile syntax: PROTO3

package io.envoyproxy.envoy.service.ratelimit.v3

/** A response from a ShouldRateLimit call.
  * [#next-free-field: 8]
  *
  * @param overallCode
  *   The overall response code which takes into account all of the descriptors that were passed
  *   in the RateLimitRequest message.
  * @param statuses
  *   A list of DescriptorStatus messages which matches the length of the descriptor list passed
  *   in the RateLimitRequest. This can be used by the caller to determine which individual
  *   descriptors failed and/or what the currently configured limits are for all of them.
  * @param responseHeadersToAdd
  *   A list of headers to add to the response
  * @param requestHeadersToAdd
  *   A list of headers to add to the request when forwarded
  * @param rawBody
  *   A response body to send to the downstream client when the response code is not OK.
  * @param dynamicMetadata
  *   Optional response metadata that will be emitted as dynamic metadata to be consumed by the next
  *   filter. This metadata lives in a namespace specified by the canonical name of extension filter
  *   that requires it:
  *  
  *   - :ref:`envoy.filters.http.ratelimit <config_http_filters_ratelimit_dynamic_metadata>` for HTTP filter.
  *   - :ref:`envoy.filters.network.ratelimit <config_network_filters_ratelimit_dynamic_metadata>` for network filter.
  *   - :ref:`envoy.filters.thrift.rate_limit <config_thrift_filters_rate_limit_dynamic_metadata>` for Thrift filter.
  * @param quota
  *   Quota is available for a request if its entire descriptor set has cached quota available.
  *   This is a union of all descriptors in the descriptor set. Clients can use the quota for future matches if and only if the descriptor set matches what was sent in the request that originated this response.
  *  
  *   If quota is available, a RLS request will not be made and the quota will be reduced by 1.
  *   If quota is not available (i.e., a cached entry doesn't exist for a RLS descriptor set), a RLS request will be triggered.
  *   If the server did not provide a quota, such as the quota message is empty then the request admission is determined by the
  *   :ref:`overall_code <envoy_v3_api_field_service.ratelimit.v3.RateLimitResponse.overall_code>`.
  *  
  *   If there is not sufficient quota and the cached entry exists for a RLS descriptor set is out-of-quota but not expired,
  *   the request will be treated as OVER_LIMIT.
  *   [#not-implemented-hide:]
  */
@SerialVersionUID(0L)
final case class RateLimitResponse(
    overallCode: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN,
    statuses: _root_.scala.Seq[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus] = _root_.scala.Seq.empty,
    responseHeadersToAdd: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue] = _root_.scala.Seq.empty,
    requestHeadersToAdd: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue] = _root_.scala.Seq.empty,
    rawBody: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY,
    dynamicMetadata: _root_.scala.Option[com.google.protobuf.struct.Struct] = _root_.scala.None,
    quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = _root_.scala.None,
    unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
    ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[RateLimitResponse] {
    @transient
    private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
    private[this] def __computeSerializedSize(): _root_.scala.Int = {
      var __size = 0
      
      {
        val __value = overallCode.value
        if (__value != 0) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(1, __value)
        }
      };
      statuses.foreach { __item =>
        val __value = __item
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      }
      responseHeadersToAdd.foreach { __item =>
        val __value = __item
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      }
      requestHeadersToAdd.foreach { __item =>
        val __value = __item
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      }
      
      {
        val __value = rawBody
        if (!__value.isEmpty) {
          __size += _root_.com.google.protobuf.CodedOutputStream.computeBytesSize(5, __value)
        }
      };
      if (dynamicMetadata.isDefined) {
        val __value = dynamicMetadata.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      if (quota.isDefined) {
        val __value = quota.get
        __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
      };
      __size += unknownFields.serializedSize
      __size
    }
    override def serializedSize: _root_.scala.Int = {
      var __size = __serializedSizeMemoized
      if (__size == 0) {
        __size = __computeSerializedSize() + 1
        __serializedSizeMemoized = __size
      }
      __size - 1
      
    }
    def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
      {
        val __v = overallCode.value
        if (__v != 0) {
          _output__.writeEnum(1, __v)
        }
      };
      statuses.foreach { __v =>
        val __m = __v
        _output__.writeTag(2, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      responseHeadersToAdd.foreach { __v =>
        val __m = __v
        _output__.writeTag(3, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      requestHeadersToAdd.foreach { __v =>
        val __m = __v
        _output__.writeTag(4, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      {
        val __v = rawBody
        if (!__v.isEmpty) {
          _output__.writeBytes(5, __v)
        }
      };
      dynamicMetadata.foreach { __v =>
        val __m = __v
        _output__.writeTag(6, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      quota.foreach { __v =>
        val __m = __v
        _output__.writeTag(7, 2)
        _output__.writeUInt32NoTag(__m.serializedSize)
        __m.writeTo(_output__)
      };
      unknownFields.writeTo(_output__)
    }
    def withOverallCode(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code): RateLimitResponse = copy(overallCode = __v)
    def clearStatuses = copy(statuses = _root_.scala.Seq.empty)
    def addStatuses(__vs: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus *): RateLimitResponse = addAllStatuses(__vs)
    def addAllStatuses(__vs: Iterable[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]): RateLimitResponse = copy(statuses = statuses ++ __vs)
    def withStatuses(__v: _root_.scala.Seq[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]): RateLimitResponse = copy(statuses = __v)
    def clearResponseHeadersToAdd = copy(responseHeadersToAdd = _root_.scala.Seq.empty)
    def addResponseHeadersToAdd(__vs: io.envoyproxy.envoy.config.core.v3.HeaderValue *): RateLimitResponse = addAllResponseHeadersToAdd(__vs)
    def addAllResponseHeadersToAdd(__vs: Iterable[io.envoyproxy.envoy.config.core.v3.HeaderValue]): RateLimitResponse = copy(responseHeadersToAdd = responseHeadersToAdd ++ __vs)
    def withResponseHeadersToAdd(__v: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]): RateLimitResponse = copy(responseHeadersToAdd = __v)
    def clearRequestHeadersToAdd = copy(requestHeadersToAdd = _root_.scala.Seq.empty)
    def addRequestHeadersToAdd(__vs: io.envoyproxy.envoy.config.core.v3.HeaderValue *): RateLimitResponse = addAllRequestHeadersToAdd(__vs)
    def addAllRequestHeadersToAdd(__vs: Iterable[io.envoyproxy.envoy.config.core.v3.HeaderValue]): RateLimitResponse = copy(requestHeadersToAdd = requestHeadersToAdd ++ __vs)
    def withRequestHeadersToAdd(__v: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]): RateLimitResponse = copy(requestHeadersToAdd = __v)
    def withRawBody(__v: _root_.com.google.protobuf.ByteString): RateLimitResponse = copy(rawBody = __v)
    def getDynamicMetadata: com.google.protobuf.struct.Struct = dynamicMetadata.getOrElse(com.google.protobuf.struct.Struct.defaultInstance)
    def clearDynamicMetadata: RateLimitResponse = copy(dynamicMetadata = _root_.scala.None)
    def withDynamicMetadata(__v: com.google.protobuf.struct.Struct): RateLimitResponse = copy(dynamicMetadata = Option(__v))
    def getQuota: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota = quota.getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.defaultInstance)
    def clearQuota: RateLimitResponse = copy(quota = _root_.scala.None)
    def withQuota(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota): RateLimitResponse = copy(quota = Option(__v))
    def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
    def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
    def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => {
          val __t = overallCode.javaValueDescriptor
          if (__t.getNumber() != 0) __t else null
        }
        case 2 => statuses
        case 3 => responseHeadersToAdd
        case 4 => requestHeadersToAdd
        case 5 => {
          val __t = rawBody
          if (__t != _root_.com.google.protobuf.ByteString.EMPTY) __t else null
        }
        case 6 => dynamicMetadata.orNull
        case 7 => quota.orNull
      }
    }
    def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
      _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
      (__field.number: @_root_.scala.unchecked) match {
        case 1 => _root_.scalapb.descriptors.PEnum(overallCode.scalaValueDescriptor)
        case 2 => _root_.scalapb.descriptors.PRepeated(statuses.iterator.map(_.toPMessage).toVector)
        case 3 => _root_.scalapb.descriptors.PRepeated(responseHeadersToAdd.iterator.map(_.toPMessage).toVector)
        case 4 => _root_.scalapb.descriptors.PRepeated(requestHeadersToAdd.iterator.map(_.toPMessage).toVector)
        case 5 => _root_.scalapb.descriptors.PByteString(rawBody)
        case 6 => dynamicMetadata.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        case 7 => quota.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
      }
    }
    def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
    def companion: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.type = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse
    // @@protoc_insertion_point(GeneratedMessage[envoy.service.ratelimit.v3.RateLimitResponse])
}

object RateLimitResponse extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse] {
  implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse] = this
  def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse = {
    var __overallCode: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN
    val __statuses: _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus] = new _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]
    val __responseHeadersToAdd: _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.config.core.v3.HeaderValue] = new _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.config.core.v3.HeaderValue]
    val __requestHeadersToAdd: _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.config.core.v3.HeaderValue] = new _root_.scala.collection.immutable.VectorBuilder[io.envoyproxy.envoy.config.core.v3.HeaderValue]
    var __rawBody: _root_.com.google.protobuf.ByteString = _root_.com.google.protobuf.ByteString.EMPTY
    var __dynamicMetadata: _root_.scala.Option[com.google.protobuf.struct.Struct] = _root_.scala.None
    var __quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = _root_.scala.None
    var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
    var _done__ = false
    while (!_done__) {
      val _tag__ = _input__.readTag()
      _tag__ match {
        case 0 => _done__ = true
        case 8 =>
          __overallCode = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.fromValue(_input__.readEnum())
        case 18 =>
          __statuses += _root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus](_input__)
        case 26 =>
          __responseHeadersToAdd += _root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.HeaderValue](_input__)
        case 34 =>
          __requestHeadersToAdd += _root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.config.core.v3.HeaderValue](_input__)
        case 42 =>
          __rawBody = _input__.readBytes()
        case 50 =>
          __dynamicMetadata = Option(__dynamicMetadata.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.struct.Struct](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case 58 =>
          __quota = Option(__quota.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
        case tag =>
          if (_unknownFields__ == null) {
            _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
          }
          _unknownFields__.parseField(tag, _input__)
      }
    }
    io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse(
        overallCode = __overallCode,
        statuses = __statuses.result(),
        responseHeadersToAdd = __responseHeadersToAdd.result(),
        requestHeadersToAdd = __requestHeadersToAdd.result(),
        rawBody = __rawBody,
        dynamicMetadata = __dynamicMetadata,
        quota = __quota,
        unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
    )
  }
  implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse] = _root_.scalapb.descriptors.Reads{
    case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
      _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
      io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse(
        overallCode = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN.scalaValueDescriptor).number),
        statuses = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scala.Seq[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]]).getOrElse(_root_.scala.Seq.empty),
        responseHeadersToAdd = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]]).getOrElse(_root_.scala.Seq.empty),
        requestHeadersToAdd = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).map(_.as[_root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]]).getOrElse(_root_.scala.Seq.empty),
        rawBody = __fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).map(_.as[_root_.com.google.protobuf.ByteString]).getOrElse(_root_.com.google.protobuf.ByteString.EMPTY),
        dynamicMetadata = __fieldsMap.get(scalaDescriptor.findFieldByNumber(6).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.struct.Struct]]),
        quota = __fieldsMap.get(scalaDescriptor.findFieldByNumber(7).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]])
      )
    case _ => throw new RuntimeException("Expected PMessage")
  }
  def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = RlsProto.javaDescriptor.getMessageTypes().get(1)
  def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = RlsProto.scalaDescriptor.messages(1)
  def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
    var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
    (__number: @_root_.scala.unchecked) match {
      case 2 => __out = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus
      case 3 => __out = io.envoyproxy.envoy.config.core.v3.HeaderValue
      case 4 => __out = io.envoyproxy.envoy.config.core.v3.HeaderValue
      case 6 => __out = com.google.protobuf.struct.Struct
      case 7 => __out = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota
    }
    __out
  }
  lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] =
    Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]](
      _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit,
      _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota,
      _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus
    )
  def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
    (__fieldNumber: @_root_.scala.unchecked) match {
      case 1 => io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code
    }
  }
  lazy val defaultInstance = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse(
    overallCode = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN,
    statuses = _root_.scala.Seq.empty,
    responseHeadersToAdd = _root_.scala.Seq.empty,
    requestHeadersToAdd = _root_.scala.Seq.empty,
    rawBody = _root_.com.google.protobuf.ByteString.EMPTY,
    dynamicMetadata = _root_.scala.None,
    quota = _root_.scala.None
  )
  sealed abstract class Code(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum {
    type EnumType = Code
    def isUnknown: _root_.scala.Boolean = false
    def isOk: _root_.scala.Boolean = false
    def isOverLimit: _root_.scala.Boolean = false
    def companion: _root_.scalapb.GeneratedEnumCompanion[Code] = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code
    final def asRecognized: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.Recognized] = if (isUnrecognized) _root_.scala.None else _root_.scala.Some(this.asInstanceOf[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.Recognized])
  }
  
  object Code extends _root_.scalapb.GeneratedEnumCompanion[Code] {
    sealed trait Recognized extends Code
    implicit def enumCompanion: _root_.scalapb.GeneratedEnumCompanion[Code] = this
    
    /** The response code is not known.
      */
    @SerialVersionUID(0L)
    case object UNKNOWN extends Code(0) with Code.Recognized {
      val index = 0
      val name = "UNKNOWN"
      override def isUnknown: _root_.scala.Boolean = true
    }
    
    /** The response code to notify that the number of requests are under limit.
      */
    @SerialVersionUID(0L)
    case object OK extends Code(1) with Code.Recognized {
      val index = 1
      val name = "OK"
      override def isOk: _root_.scala.Boolean = true
    }
    
    /** The response code to notify that the number of requests are over limit.
      */
    @SerialVersionUID(0L)
    case object OVER_LIMIT extends Code(2) with Code.Recognized {
      val index = 2
      val name = "OVER_LIMIT"
      override def isOverLimit: _root_.scala.Boolean = true
    }
    
    @SerialVersionUID(0L)
    final case class Unrecognized(unrecognizedValue: _root_.scala.Int) extends Code(unrecognizedValue) with _root_.scalapb.UnrecognizedEnum
    lazy val values = scala.collection.immutable.Seq(UNKNOWN, OK, OVER_LIMIT)
    def fromValue(__value: _root_.scala.Int): Code = __value match {
      case 0 => UNKNOWN
      case 1 => OK
      case 2 => OVER_LIMIT
      case __other => Unrecognized(__other)
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.EnumDescriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.javaDescriptor.getEnumTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.EnumDescriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.scalaDescriptor.enums(0)
  }
  /** Defines an actual rate limit in terms of requests per unit of time and the unit itself.
    *
    * @param name
    *   A name or description of this limit.
    * @param requestsPerUnit
    *   The number of requests per unit of time.
    * @param unit
    *   The unit of time.
    */
  @SerialVersionUID(0L)
  final case class RateLimit(
      name: _root_.scala.Predef.String = "",
      requestsPerUnit: _root_.scala.Int = 0,
      unit: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.UNKNOWN,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[RateLimit] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = name
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(3, __value)
          }
        };
        
        {
          val __value = requestsPerUnit
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt32Size(1, __value)
          }
        };
        
        {
          val __value = unit.value
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(2, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = requestsPerUnit
          if (__v != 0) {
            _output__.writeUInt32(1, __v)
          }
        };
        {
          val __v = unit.value
          if (__v != 0) {
            _output__.writeEnum(2, __v)
          }
        };
        {
          val __v = name
          if (!__v.isEmpty) {
            _output__.writeString(3, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def withName(__v: _root_.scala.Predef.String): RateLimit = copy(name = __v)
      def withRequestsPerUnit(__v: _root_.scala.Int): RateLimit = copy(requestsPerUnit = __v)
      def withUnit(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit): RateLimit = copy(unit = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 3 => {
            val __t = name
            if (__t != "") __t else null
          }
          case 1 => {
            val __t = requestsPerUnit
            if (__t != 0) __t else null
          }
          case 2 => {
            val __t = unit.javaValueDescriptor
            if (__t.getNumber() != 0) __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 3 => _root_.scalapb.descriptors.PString(name)
          case 1 => _root_.scalapb.descriptors.PInt(requestsPerUnit)
          case 2 => _root_.scalapb.descriptors.PEnum(unit.scalaValueDescriptor)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.type = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit
      // @@protoc_insertion_point(GeneratedMessage[envoy.service.ratelimit.v3.RateLimitResponse.RateLimit])
  }
  
  object RateLimit extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit = {
      var __name: _root_.scala.Predef.String = ""
      var __requestsPerUnit: _root_.scala.Int = 0
      var __unit: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.UNKNOWN
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 26 =>
            __name = _input__.readStringRequireUtf8()
          case 8 =>
            __requestsPerUnit = _input__.readUInt32()
          case 16 =>
            __unit = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.fromValue(_input__.readEnum())
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit(
          name = __name,
          requestsPerUnit = __requestsPerUnit,
          unit = __unit,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit(
          name = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          requestsPerUnit = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Int]).getOrElse(0),
          unit = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.UNKNOWN.scalaValueDescriptor).number)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.javaDescriptor.getNestedTypes().get(0)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.scalaDescriptor.nestedMessages(0)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = throw new MatchError(__number)
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 2 => io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit
      }
    }
    lazy val defaultInstance = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit(
      name = "",
      requestsPerUnit = 0,
      unit = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.UNKNOWN
    )
    /** Identifies the unit of of time for rate limit.
      * [#comment: replace by envoy/type/v3/ratelimit_unit.proto in v4]
      */
    sealed abstract class Unit(val value: _root_.scala.Int) extends _root_.scalapb.GeneratedEnum {
      type EnumType = Unit
      def isUnknown: _root_.scala.Boolean = false
      def isSecond: _root_.scala.Boolean = false
      def isMinute: _root_.scala.Boolean = false
      def isHour: _root_.scala.Boolean = false
      def isDay: _root_.scala.Boolean = false
      def companion: _root_.scalapb.GeneratedEnumCompanion[Unit] = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit
      final def asRecognized: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.Recognized] = if (isUnrecognized) _root_.scala.None else _root_.scala.Some(this.asInstanceOf[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit.Recognized])
    }
    
    object Unit extends _root_.scalapb.GeneratedEnumCompanion[Unit] {
      sealed trait Recognized extends Unit
      implicit def enumCompanion: _root_.scalapb.GeneratedEnumCompanion[Unit] = this
      
      /** The time unit is not known.
        */
      @SerialVersionUID(0L)
      case object UNKNOWN extends Unit(0) with Unit.Recognized {
        val index = 0
        val name = "UNKNOWN"
        override def isUnknown: _root_.scala.Boolean = true
      }
      
      /** The time unit representing a second.
        */
      @SerialVersionUID(0L)
      case object SECOND extends Unit(1) with Unit.Recognized {
        val index = 1
        val name = "SECOND"
        override def isSecond: _root_.scala.Boolean = true
      }
      
      /** The time unit representing a minute.
        */
      @SerialVersionUID(0L)
      case object MINUTE extends Unit(2) with Unit.Recognized {
        val index = 2
        val name = "MINUTE"
        override def isMinute: _root_.scala.Boolean = true
      }
      
      /** The time unit representing an hour.
        */
      @SerialVersionUID(0L)
      case object HOUR extends Unit(3) with Unit.Recognized {
        val index = 3
        val name = "HOUR"
        override def isHour: _root_.scala.Boolean = true
      }
      
      /** The time unit representing a day.
        */
      @SerialVersionUID(0L)
      case object DAY extends Unit(4) with Unit.Recognized {
        val index = 4
        val name = "DAY"
        override def isDay: _root_.scala.Boolean = true
      }
      
      @SerialVersionUID(0L)
      final case class Unrecognized(unrecognizedValue: _root_.scala.Int) extends Unit(unrecognizedValue) with _root_.scalapb.UnrecognizedEnum
      lazy val values = scala.collection.immutable.Seq(UNKNOWN, SECOND, MINUTE, HOUR, DAY)
      def fromValue(__value: _root_.scala.Int): Unit = __value match {
        case 0 => UNKNOWN
        case 1 => SECOND
        case 2 => MINUTE
        case 3 => HOUR
        case 4 => DAY
        case __other => Unrecognized(__other)
      }
      def javaDescriptor: _root_.com.google.protobuf.Descriptors.EnumDescriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.javaDescriptor.getEnumTypes().get(0)
      def scalaDescriptor: _root_.scalapb.descriptors.EnumDescriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.scalaDescriptor.enums(0)
    }
    implicit class RateLimitLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit](_l) {
      def name: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.name)((c_, f_) => c_.copy(name = f_))
      def requestsPerUnit: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.requestsPerUnit)((c_, f_) => c_.copy(requestsPerUnit = f_))
      def unit: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit] = field(_.unit)((c_, f_) => c_.copy(unit = f_))
    }
    final val NAME_FIELD_NUMBER = 3
    final val REQUESTS_PER_UNIT_FIELD_NUMBER = 1
    final val UNIT_FIELD_NUMBER = 2
    def of(
      name: _root_.scala.Predef.String,
      requestsPerUnit: _root_.scala.Int,
      unit: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.Unit
    ): _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit = _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit(
      name,
      requestsPerUnit,
      unit
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.service.ratelimit.v3.RateLimitResponse.RateLimit])
  }
  
  /** Cacheable quota for responses.
    * Quota can be granted at different levels: either for each individual descriptor or for the whole descriptor set.
    * This is a certain number of requests over a period of time.
    * The client may cache this result and apply the effective RateLimitResponse to future matching
    * requests without querying rate limit service.
    *
    * When quota expires due to timeout, a new RLS request will also be made.
    * The implementation may choose to preemptively query the rate limit server for more quota on or
    * before expiration or before the available quota runs out.
    * [#not-implemented-hide:]
    *
    * @param requests
    *   Number of matching requests granted in quota. Must be 1 or more.
    * @param id
    *   The unique id that is associated with each Quota either at individual descriptor level or whole descriptor set level.
    *  
    *   For a matching policy with boolean logic, for example, match: "request.headers['environment'] == 'staging' || request.headers['environment'] == 'dev'"),
    *   the request_headers action produces a distinct list of descriptors for each possible value of the ‘environment’ header even though the granted quota is same.
    *   Thus, the client will use this id information (returned from RLS server) to correctly correlate the multiple descriptors/descriptor sets that have been granted with same quota (i.e., share the same quota among multiple descriptors or descriptor sets.)
    *  
    *   If id is empty, this id field will be ignored. If quota for the same id changes (e.g. due to configuration update), the old quota will be overridden by the new one. Shared quotas referenced by ID will still adhere to expiration after `valid_until`.
    */
  @SerialVersionUID(0L)
  final case class Quota(
      requests: _root_.scala.Int = 0,
      expirationSpecifier: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.Empty,
      id: _root_.scala.Predef.String = "",
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[Quota] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = requests
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt32Size(1, __value)
          }
        };
        if (expirationSpecifier.validUntil.isDefined) {
          val __value = expirationSpecifier.validUntil.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        
        {
          val __value = id
          if (!__value.isEmpty) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeStringSize(3, __value)
          }
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = requests
          if (__v != 0) {
            _output__.writeUInt32(1, __v)
          }
        };
        expirationSpecifier.validUntil.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = id
          if (!__v.isEmpty) {
            _output__.writeString(3, __v)
          }
        };
        unknownFields.writeTo(_output__)
      }
      def withRequests(__v: _root_.scala.Int): Quota = copy(requests = __v)
      def getValidUntil: com.google.protobuf.timestamp.Timestamp = expirationSpecifier.validUntil.getOrElse(com.google.protobuf.timestamp.Timestamp.defaultInstance)
      def withValidUntil(__v: com.google.protobuf.timestamp.Timestamp): Quota = copy(expirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.ValidUntil(__v))
      def withId(__v: _root_.scala.Predef.String): Quota = copy(id = __v)
      def clearExpirationSpecifier: Quota = copy(expirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.Empty)
      def withExpirationSpecifier(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier): Quota = copy(expirationSpecifier = __v)
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = requests
            if (__t != 0) __t else null
          }
          case 2 => expirationSpecifier.validUntil.orNull
          case 3 => {
            val __t = id
            if (__t != "") __t else null
          }
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PInt(requests)
          case 2 => expirationSpecifier.validUntil.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => _root_.scalapb.descriptors.PString(id)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.type = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota
      // @@protoc_insertion_point(GeneratedMessage[envoy.service.ratelimit.v3.RateLimitResponse.Quota])
  }
  
  object Quota extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota = {
      var __requests: _root_.scala.Int = 0
      var __id: _root_.scala.Predef.String = ""
      var __expirationSpecifier: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.Empty
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 8 =>
            __requests = _input__.readUInt32()
          case 18 =>
            __expirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.ValidUntil(__expirationSpecifier.validUntil.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.timestamp.Timestamp](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 26 =>
            __id = _input__.readStringRequireUtf8()
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota(
          requests = __requests,
          id = __id,
          expirationSpecifier = __expirationSpecifier,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota(
          requests = __fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scala.Int]).getOrElse(0),
          id = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Predef.String]).getOrElse(""),
          expirationSpecifier = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.timestamp.Timestamp]]).map(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.ValidUntil(_))
              .getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.Empty)
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.javaDescriptor.getNestedTypes().get(1)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.scalaDescriptor.nestedMessages(1)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = com.google.protobuf.timestamp.Timestamp
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = throw new MatchError(__fieldNumber)
    lazy val defaultInstance = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota(
      requests = 0,
      id = "",
      expirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.Empty
    )
    sealed trait ExpirationSpecifier extends _root_.scalapb.GeneratedOneof {
      def isEmpty: _root_.scala.Boolean = false
      def isDefined: _root_.scala.Boolean = true
      def isValidUntil: _root_.scala.Boolean = false
      def validUntil: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = _root_.scala.None
    }
    object ExpirationSpecifier {
      @SerialVersionUID(0L)
      case object Empty extends io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier {
        type ValueType = _root_.scala.Nothing
        override def isEmpty: _root_.scala.Boolean = true
        override def isDefined: _root_.scala.Boolean = false
        override def number: _root_.scala.Int = 0
        override def value: _root_.scala.Nothing = throw new java.util.NoSuchElementException("Empty.value")
      }
    
      @SerialVersionUID(0L)
      final case class ValidUntil(value: com.google.protobuf.timestamp.Timestamp) extends io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier {
        type ValueType = com.google.protobuf.timestamp.Timestamp
        override def isValidUntil: _root_.scala.Boolean = true
        override def validUntil: _root_.scala.Option[com.google.protobuf.timestamp.Timestamp] = Some(value)
        override def number: _root_.scala.Int = 2
      }
    }
    implicit class QuotaLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota](_l) {
      def requests: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.requests)((c_, f_) => c_.copy(requests = f_))
      def validUntil: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.timestamp.Timestamp] = field(_.getValidUntil)((c_, f_) => c_.copy(expirationSpecifier = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier.ValidUntil(f_)))
      def id: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Predef.String] = field(_.id)((c_, f_) => c_.copy(id = f_))
      def expirationSpecifier: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier] = field(_.expirationSpecifier)((c_, f_) => c_.copy(expirationSpecifier = f_))
    }
    final val REQUESTS_FIELD_NUMBER = 1
    final val VALID_UNTIL_FIELD_NUMBER = 2
    final val ID_FIELD_NUMBER = 3
    def of(
      requests: _root_.scala.Int,
      expirationSpecifier: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.ExpirationSpecifier,
      id: _root_.scala.Predef.String
    ): _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota = _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota(
      requests,
      expirationSpecifier,
      id
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.service.ratelimit.v3.RateLimitResponse.Quota])
  }
  
  /** [#next-free-field: 6]
    *
    * @param code
    *   The response code for an individual descriptor.
    * @param currentLimit
    *   The current limit as configured by the server. Useful for debugging, etc.
    * @param limitRemaining
    *   The limit remaining in the current time unit.
    * @param durationUntilReset
    *   Duration until reset of the current limit window.
    * @param quota
    *   Quota is available for a request if its descriptor set has cached quota available for all
    *   descriptors.
    *   This is for each individual descriptor in the descriptor set. The client will perform matches for each individual descriptor against available per-descriptor quota.
    *  
    *   If quota is available, a RLS request will not be made and the quota will be reduced by 1 for
    *   all matching descriptors.
    *  
    *   If there is not sufficient quota, there are three cases:
    *   1. A cached entry exists for a RLS descriptor that is out-of-quota, but not expired.
    *      In this case, the request will be treated as OVER_LIMIT.
    *   2. Some RLS descriptors have a cached entry that has valid quota but some RLS descriptors
    *      have no cached entry. This will trigger a new RLS request.
    *      When the result is returned, a single unit will be consumed from the quota for all
    *      matching descriptors.
    *      If the server did not provide a quota, such as the quota message is empty for some of
    *      the descriptors, then the request admission is determined by the
    *      :ref:`overall_code <envoy_v3_api_field_service.ratelimit.v3.RateLimitResponse.overall_code>`.
    *   3. All RLS descriptors lack a cached entry, this will trigger a new RLS request,
    *      When the result is returned, a single unit will be consumed from the quota for all
    *      matching descriptors.
    *      If the server did not provide a quota, such as the quota message is empty for some of
    *      the descriptors, then the request admission is determined by the
    *      :ref:`overall_code <envoy_v3_api_field_service.ratelimit.v3.RateLimitResponse.overall_code>`.
    *   [#not-implemented-hide:]
    */
  @SerialVersionUID(0L)
  final case class DescriptorStatus(
      code: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN,
      currentLimit: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] = _root_.scala.None,
      limitRemaining: _root_.scala.Int = 0,
      durationUntilReset: _root_.scala.Option[com.google.protobuf.duration.Duration] = _root_.scala.None,
      quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = _root_.scala.None,
      unknownFields: _root_.scalapb.UnknownFieldSet = _root_.scalapb.UnknownFieldSet.empty
      ) extends scalapb.GeneratedMessage with scalapb.lenses.Updatable[DescriptorStatus] {
      @transient
      private[this] var __serializedSizeMemoized: _root_.scala.Int = 0
      private[this] def __computeSerializedSize(): _root_.scala.Int = {
        var __size = 0
        
        {
          val __value = code.value
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeEnumSize(1, __value)
          }
        };
        if (currentLimit.isDefined) {
          val __value = currentLimit.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        
        {
          val __value = limitRemaining
          if (__value != 0) {
            __size += _root_.com.google.protobuf.CodedOutputStream.computeUInt32Size(3, __value)
          }
        };
        if (durationUntilReset.isDefined) {
          val __value = durationUntilReset.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        if (quota.isDefined) {
          val __value = quota.get
          __size += 1 + _root_.com.google.protobuf.CodedOutputStream.computeUInt32SizeNoTag(__value.serializedSize) + __value.serializedSize
        };
        __size += unknownFields.serializedSize
        __size
      }
      override def serializedSize: _root_.scala.Int = {
        var __size = __serializedSizeMemoized
        if (__size == 0) {
          __size = __computeSerializedSize() + 1
          __serializedSizeMemoized = __size
        }
        __size - 1
        
      }
      def writeTo(`_output__`: _root_.com.google.protobuf.CodedOutputStream): _root_.scala.Unit = {
        {
          val __v = code.value
          if (__v != 0) {
            _output__.writeEnum(1, __v)
          }
        };
        currentLimit.foreach { __v =>
          val __m = __v
          _output__.writeTag(2, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        {
          val __v = limitRemaining
          if (__v != 0) {
            _output__.writeUInt32(3, __v)
          }
        };
        durationUntilReset.foreach { __v =>
          val __m = __v
          _output__.writeTag(4, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        quota.foreach { __v =>
          val __m = __v
          _output__.writeTag(5, 2)
          _output__.writeUInt32NoTag(__m.serializedSize)
          __m.writeTo(_output__)
        };
        unknownFields.writeTo(_output__)
      }
      def withCode(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code): DescriptorStatus = copy(code = __v)
      def getCurrentLimit: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit = currentLimit.getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit.defaultInstance)
      def clearCurrentLimit: DescriptorStatus = copy(currentLimit = _root_.scala.None)
      def withCurrentLimit(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit): DescriptorStatus = copy(currentLimit = Option(__v))
      def withLimitRemaining(__v: _root_.scala.Int): DescriptorStatus = copy(limitRemaining = __v)
      def getDurationUntilReset: com.google.protobuf.duration.Duration = durationUntilReset.getOrElse(com.google.protobuf.duration.Duration.defaultInstance)
      def clearDurationUntilReset: DescriptorStatus = copy(durationUntilReset = _root_.scala.None)
      def withDurationUntilReset(__v: com.google.protobuf.duration.Duration): DescriptorStatus = copy(durationUntilReset = Option(__v))
      def getQuota: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota = quota.getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota.defaultInstance)
      def clearQuota: DescriptorStatus = copy(quota = _root_.scala.None)
      def withQuota(__v: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota): DescriptorStatus = copy(quota = Option(__v))
      def withUnknownFields(__v: _root_.scalapb.UnknownFieldSet) = copy(unknownFields = __v)
      def discardUnknownFields = copy(unknownFields = _root_.scalapb.UnknownFieldSet.empty)
      def getFieldByNumber(__fieldNumber: _root_.scala.Int): _root_.scala.Any = {
        (__fieldNumber: @_root_.scala.unchecked) match {
          case 1 => {
            val __t = code.javaValueDescriptor
            if (__t.getNumber() != 0) __t else null
          }
          case 2 => currentLimit.orNull
          case 3 => {
            val __t = limitRemaining
            if (__t != 0) __t else null
          }
          case 4 => durationUntilReset.orNull
          case 5 => quota.orNull
        }
      }
      def getField(__field: _root_.scalapb.descriptors.FieldDescriptor): _root_.scalapb.descriptors.PValue = {
        _root_.scala.Predef.require(__field.containingMessage eq companion.scalaDescriptor)
        (__field.number: @_root_.scala.unchecked) match {
          case 1 => _root_.scalapb.descriptors.PEnum(code.scalaValueDescriptor)
          case 2 => currentLimit.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 3 => _root_.scalapb.descriptors.PInt(limitRemaining)
          case 4 => durationUntilReset.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
          case 5 => quota.map(_.toPMessage).getOrElse(_root_.scalapb.descriptors.PEmpty)
        }
      }
      def toProtoString: _root_.scala.Predef.String = _root_.scalapb.TextFormat.printToUnicodeString(this)
      def companion: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus.type = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus
      // @@protoc_insertion_point(GeneratedMessage[envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus])
  }
  
  object DescriptorStatus extends scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus] {
    implicit def messageCompanion: scalapb.GeneratedMessageCompanion[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus] = this
    def parseFrom(`_input__`: _root_.com.google.protobuf.CodedInputStream): io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus = {
      var __code: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN
      var __currentLimit: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] = _root_.scala.None
      var __limitRemaining: _root_.scala.Int = 0
      var __durationUntilReset: _root_.scala.Option[com.google.protobuf.duration.Duration] = _root_.scala.None
      var __quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = _root_.scala.None
      var `_unknownFields__`: _root_.scalapb.UnknownFieldSet.Builder = null
      var _done__ = false
      while (!_done__) {
        val _tag__ = _input__.readTag()
        _tag__ match {
          case 0 => _done__ = true
          case 8 =>
            __code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.fromValue(_input__.readEnum())
          case 18 =>
            __currentLimit = Option(__currentLimit.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 24 =>
            __limitRemaining = _input__.readUInt32()
          case 34 =>
            __durationUntilReset = Option(__durationUntilReset.fold(_root_.scalapb.LiteParser.readMessage[com.google.protobuf.duration.Duration](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case 42 =>
            __quota = Option(__quota.fold(_root_.scalapb.LiteParser.readMessage[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota](_input__))(_root_.scalapb.LiteParser.readMessage(_input__, _)))
          case tag =>
            if (_unknownFields__ == null) {
              _unknownFields__ = new _root_.scalapb.UnknownFieldSet.Builder()
            }
            _unknownFields__.parseField(tag, _input__)
        }
      }
      io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus(
          code = __code,
          currentLimit = __currentLimit,
          limitRemaining = __limitRemaining,
          durationUntilReset = __durationUntilReset,
          quota = __quota,
          unknownFields = if (_unknownFields__ == null) _root_.scalapb.UnknownFieldSet.empty else _unknownFields__.result()
      )
    }
    implicit def messageReads: _root_.scalapb.descriptors.Reads[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus] = _root_.scalapb.descriptors.Reads{
      case _root_.scalapb.descriptors.PMessage(__fieldsMap) =>
        _root_.scala.Predef.require(__fieldsMap.keys.forall(_.containingMessage eq scalaDescriptor), "FieldDescriptor does not match message type.")
        io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus(
          code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.fromValue(__fieldsMap.get(scalaDescriptor.findFieldByNumber(1).get).map(_.as[_root_.scalapb.descriptors.EnumValueDescriptor]).getOrElse(io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN.scalaValueDescriptor).number),
          currentLimit = __fieldsMap.get(scalaDescriptor.findFieldByNumber(2).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit]]),
          limitRemaining = __fieldsMap.get(scalaDescriptor.findFieldByNumber(3).get).map(_.as[_root_.scala.Int]).getOrElse(0),
          durationUntilReset = __fieldsMap.get(scalaDescriptor.findFieldByNumber(4).get).flatMap(_.as[_root_.scala.Option[com.google.protobuf.duration.Duration]]),
          quota = __fieldsMap.get(scalaDescriptor.findFieldByNumber(5).get).flatMap(_.as[_root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]])
        )
      case _ => throw new RuntimeException("Expected PMessage")
    }
    def javaDescriptor: _root_.com.google.protobuf.Descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.javaDescriptor.getNestedTypes().get(2)
    def scalaDescriptor: _root_.scalapb.descriptors.Descriptor = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.scalaDescriptor.nestedMessages(2)
    def messageCompanionForFieldNumber(__number: _root_.scala.Int): _root_.scalapb.GeneratedMessageCompanion[_] = {
      var __out: _root_.scalapb.GeneratedMessageCompanion[_] = null
      (__number: @_root_.scala.unchecked) match {
        case 2 => __out = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit
        case 4 => __out = com.google.protobuf.duration.Duration
        case 5 => __out = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota
      }
      __out
    }
    lazy val nestedMessagesCompanions: Seq[_root_.scalapb.GeneratedMessageCompanion[_ <: _root_.scalapb.GeneratedMessage]] = Seq.empty
    def enumCompanionForFieldNumber(__fieldNumber: _root_.scala.Int): _root_.scalapb.GeneratedEnumCompanion[_] = {
      (__fieldNumber: @_root_.scala.unchecked) match {
        case 1 => io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code
      }
    }
    lazy val defaultInstance = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus(
      code = io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code.UNKNOWN,
      currentLimit = _root_.scala.None,
      limitRemaining = 0,
      durationUntilReset = _root_.scala.None,
      quota = _root_.scala.None
    )
    implicit class DescriptorStatusLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus](_l) {
      def code: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code] = field(_.code)((c_, f_) => c_.copy(code = f_))
      def currentLimit: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit] = field(_.getCurrentLimit)((c_, f_) => c_.copy(currentLimit = Option(f_)))
      def optionalCurrentLimit: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit]] = field(_.currentLimit)((c_, f_) => c_.copy(currentLimit = f_))
      def limitRemaining: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Int] = field(_.limitRemaining)((c_, f_) => c_.copy(limitRemaining = f_))
      def durationUntilReset: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.duration.Duration] = field(_.getDurationUntilReset)((c_, f_) => c_.copy(durationUntilReset = Option(f_)))
      def optionalDurationUntilReset: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[com.google.protobuf.duration.Duration]] = field(_.durationUntilReset)((c_, f_) => c_.copy(durationUntilReset = f_))
      def quota: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = field(_.getQuota)((c_, f_) => c_.copy(quota = Option(f_)))
      def optionalQuota: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]] = field(_.quota)((c_, f_) => c_.copy(quota = f_))
    }
    final val CODE_FIELD_NUMBER = 1
    final val CURRENT_LIMIT_FIELD_NUMBER = 2
    final val LIMIT_REMAINING_FIELD_NUMBER = 3
    final val DURATION_UNTIL_RESET_FIELD_NUMBER = 4
    final val QUOTA_FIELD_NUMBER = 5
    def of(
      code: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code,
      currentLimit: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.RateLimit],
      limitRemaining: _root_.scala.Int,
      durationUntilReset: _root_.scala.Option[com.google.protobuf.duration.Duration],
      quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]
    ): _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus = _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus(
      code,
      currentLimit,
      limitRemaining,
      durationUntilReset,
      quota
    )
    // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus])
  }
  
  implicit class RateLimitResponseLens[UpperPB](_l: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse]) extends _root_.scalapb.lenses.ObjectLens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse](_l) {
    def overallCode: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code] = field(_.overallCode)((c_, f_) => c_.copy(overallCode = f_))
    def statuses: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus]] = field(_.statuses)((c_, f_) => c_.copy(statuses = f_))
    def responseHeadersToAdd: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]] = field(_.responseHeadersToAdd)((c_, f_) => c_.copy(responseHeadersToAdd = f_))
    def requestHeadersToAdd: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue]] = field(_.requestHeadersToAdd)((c_, f_) => c_.copy(requestHeadersToAdd = f_))
    def rawBody: _root_.scalapb.lenses.Lens[UpperPB, _root_.com.google.protobuf.ByteString] = field(_.rawBody)((c_, f_) => c_.copy(rawBody = f_))
    def dynamicMetadata: _root_.scalapb.lenses.Lens[UpperPB, com.google.protobuf.struct.Struct] = field(_.getDynamicMetadata)((c_, f_) => c_.copy(dynamicMetadata = Option(f_)))
    def optionalDynamicMetadata: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[com.google.protobuf.struct.Struct]] = field(_.dynamicMetadata)((c_, f_) => c_.copy(dynamicMetadata = f_))
    def quota: _root_.scalapb.lenses.Lens[UpperPB, io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota] = field(_.getQuota)((c_, f_) => c_.copy(quota = Option(f_)))
    def optionalQuota: _root_.scalapb.lenses.Lens[UpperPB, _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]] = field(_.quota)((c_, f_) => c_.copy(quota = f_))
  }
  final val OVERALL_CODE_FIELD_NUMBER = 1
  final val STATUSES_FIELD_NUMBER = 2
  final val RESPONSE_HEADERS_TO_ADD_FIELD_NUMBER = 3
  final val REQUEST_HEADERS_TO_ADD_FIELD_NUMBER = 4
  final val RAW_BODY_FIELD_NUMBER = 5
  final val DYNAMIC_METADATA_FIELD_NUMBER = 6
  final val QUOTA_FIELD_NUMBER = 7
  def of(
    overallCode: io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Code,
    statuses: _root_.scala.Seq[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.DescriptorStatus],
    responseHeadersToAdd: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue],
    requestHeadersToAdd: _root_.scala.Seq[io.envoyproxy.envoy.config.core.v3.HeaderValue],
    rawBody: _root_.com.google.protobuf.ByteString,
    dynamicMetadata: _root_.scala.Option[com.google.protobuf.struct.Struct],
    quota: _root_.scala.Option[io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse.Quota]
  ): _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse = _root_.io.envoyproxy.envoy.service.ratelimit.v3.RateLimitResponse(
    overallCode,
    statuses,
    responseHeadersToAdd,
    requestHeadersToAdd,
    rawBody,
    dynamicMetadata,
    quota
  )
  // @@protoc_insertion_point(GeneratedMessageCompanion[envoy.service.ratelimit.v3.RateLimitResponse])
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy