Quota class

Quota configuration helps to achieve fairness and budgeting in service usage.

The quota configuration works this way:

  • The service configuration defines a set of metrics.
  • For API calls, the quota.metric_rules maps methods to metrics with corresponding costs.
  • The quota.limits defines limits on the metrics, which will be used for quota checks at runtime.

An example quota configuration in yaml format:

quota:
  limits:

  - name: apiWriteQpsPerProject
    metric: library.googleapis.com/write_calls
    unit: "1/min/{project}"  # rate limit for consumer projects
    values:
      STANDARD: 10000

  # The metric rules bind all methods to the read_calls metric,
  # except for the UpdateBook and DeleteBook methods. These two methods
  # are mapped to the write_calls metric, with the UpdateBook method
  # consuming at twice rate as the DeleteBook method.
  metric_rules:
  - selector: "*"
    metric_costs:
      library.googleapis.com/read_calls: 1
  - selector: google.example.library.v1.LibraryService.UpdateBook
    metric_costs:
      library.googleapis.com/write_calls: 2
  - selector: google.example.library.v1.LibraryService.DeleteBook
    metric_costs:
      library.googleapis.com/write_calls: 1

Corresponding Metric definition:

  metrics:
  - name: library.googleapis.com/read_calls
    display_name: Read requests
    metric_kind: DELTA
    value_type: INT64

  - name: library.googleapis.com/write_calls
    display_name: Write requests
    metric_kind: DELTA
    value_type: INT64
Inheritance
  • Object
  • GeneratedMessage
  • Quota
Available extensions

Constructors

Quota.new({Iterable<QuotaLimit>? limits, Iterable<MetricRule>? metricRules})
factory
Quota.fromBuffer(List<int> i, [ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY])
factory
Quota.fromJson(String i, [ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY])
factory

Properties

hashCode int
Calculates a hash code based on the contents of the protobuf.
no setterinherited
info_ → BuilderInfo
no setteroverride
isFrozen bool
Returns true if this message is marked read-only. Otherwise false.
no setterinherited
limits → PbList<QuotaLimit>
List of QuotaLimit definitions for the service.
no setter
metricRules → PbList<MetricRule>
List of MetricRule definitions, each one mapping a selected method to one or more metrics.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
unknownFields → UnknownFieldSet
no setterinherited

Methods

addExtension(Extension extension, Object? value) → void
Adds an extension field value to a repeated field.
inherited
check() → void
Throws a StateError if the message has required fields without a value.
inherited
clear() → void
Clears all data that was set in this message.
inherited
clearExtension(Extension extension) → void
Clears an extension field and also removes the extension.
inherited
clearField(int tagNumber) → void
Clears the contents of a given field.
inherited
clone() Quota
Creates a deep copy of the fields in this message. (The generated code uses mergeFromMessage.)
override
copyWith(void updates(Quota)) Quota
Apply updates to a copy of this message.
override
createEmptyInstance() Quota
Creates an empty instance of the same message type as this.
override
deepCopy() → T

Available on T, provided by the GeneratedMessageGenericExtensions extension

Returns a writable deep copy of this message.
extensionsAreInitialized() bool
inherited
freeze() → GeneratedMessage
Make this message read-only.
inherited
getDefaultForField(int tagNumber) → dynamic
Returns the default value for the given field.
inherited
getExtension(Extension extension) → dynamic
Returns the value of extension.
inherited
getField(int tagNumber) → dynamic
Returns the value of the field associated with tagNumber, or the default value if it is not set.
inherited
getFieldOrNull(int tagNumber) → dynamic
Returns the value of a field, ignoring any defaults.
inherited
getTagNumber(String fieldName) int?
inherited
hasExtension(Extension extension) bool
Returns true if a value of extension is present.
inherited
hasField(int tagNumber) bool
Whether this message has a field associated with tagNumber.
inherited
hasRequiredFields() bool
Whether the message has required fields.
inherited
isInitialized() bool
Whether all required fields in the message and embedded messages are set.
inherited
mergeFromBuffer(List<int> input, [ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) → void
Merges serialized protocol buffer data into this message.
inherited
mergeFromCodedBufferReader(CodedBufferReader input, [ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) → void
Same as mergeFromBuffer, but takes a CodedBufferReader input.
inherited
mergeFromJson(String data, [ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) → void
Merges field values from data, a JSON object, encoded as described by GeneratedMessage.writeToJson.
inherited
mergeFromJsonMap(Map<String, dynamic> json, [ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) → void
Merges field values from a JSON object represented as a Dart map.
inherited
mergeFromMessage(GeneratedMessage other) → void
Merges the contents of the other into this message.
inherited
mergeFromProto3Json(Object? json, {TypeRegistry typeRegistry = const TypeRegistry.empty(), bool ignoreUnknownFields = false, bool supportNamesWithUnderscores = true, bool permissiveEnums = false}) → void
Merges field values from json, a JSON object using proto3 encoding.
inherited
mergeUnknownFields(UnknownFieldSet unknownFieldSet) → void
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
rebuild(void updates(T)) → T

Available on T, provided by the GeneratedMessageGenericExtensions extension

Apply updates to a copy of this message.
setExtension(Extension extension, Object value) → void
Sets the value of a non-repeated extension field to value.
inherited
setField(int tagNumber, Object value) → void
Sets the value of a field by its tagNumber.
inherited
toBuilder() → GeneratedMessage
Creates a writable, shallow copy of this message.
inherited
toDebugString() String
Returns a String representation of this message.
inherited
toProto3Json({TypeRegistry typeRegistry = const TypeRegistry.empty()}) Object?
Returns an Object representing Proto3 JSON serialization of this.
inherited
toString() String
Returns a String representation of this message.
inherited
writeToBuffer() Uint8List
Serialize the message as the protobuf binary format.
inherited
writeToCodedBufferWriter(CodedBufferWriter output) → void
Same as writeToBuffer, but serializes to the given CodedBufferWriter.
inherited
writeToJson() String
Returns a JSON string that encodes this message.
inherited
writeToJsonMap() Map<String, dynamic>
Returns the JSON encoding of this message as a Dart Map.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

create() Quota
createRepeated() → PbList<Quota>
getDefault() Quota