Represents a set of metric values in the same metric. Each metric value in the set should have a unique combination of start time, end time, and label values.
JSON representation  

{
"metricName": string,
"metricValues": [
{
object( 
Fields  

metricName 
The metric name defined in the service configuration. 
metricValues[] 
The values in this metric. 
MetricValue
Represents a single metric value.
JSON representation  

{ "labels": { string: string, ... }, "startTime": string, "endTime": string, // Union field 
Fields  

labels 
The labels describing the metric value. See comments on An object containing a list of 

startTime 
The start of the time period over which this metric value's measurement applies. The time period has different semantics for different metric types (cumulative, delta, and gauge). See the metric definition documentation in the service configuration for details. A timestamp in RFC3339 UTC "Zulu" format, accurate to nanoseconds. Example: 

endTime 
The end of the time period over which this metric value's measurement applies. A timestamp in RFC3339 UTC "Zulu" format, accurate to nanoseconds. Example: 

Union field value . The value. The type of value used in the request must agree with the metric definition in the service configuration, otherwise the MetricValue is rejected. value can be only one of the following: 

boolValue 
A boolean value. 

int64Value 
A signed 64bit integer value. 

doubleValue 
A double precision floating point value. 

stringValue 
A text string value. 

distributionValue 
A distribution value. 
Distribution
Distribution represents a frequency distribution of doublevalued sample points. It contains the size of the population of sample points plus additional optional information:
 the arithmetic mean of the samples
 the minimum and maximum of the samples
 the sumsquareddeviation of the samples, used to compute variance
 a histogram of the values of the sample points
JSON representation  

{ "count": string, "mean": number, "minimum": number, "maximum": number, "sumOfSquaredDeviation": number, "bucketCounts": [ string ], // Union field 
Fields  

count 
The total number of samples in the distribution. Must be >= 0. 

mean 
The arithmetic mean of the samples in the distribution. If 

minimum 
The minimum of the population of values. Ignored if 

maximum 
The maximum of the population of values. Ignored if 

sumOfSquaredDeviation 
The sum of squared deviations from the mean: Sum[i=1..count]((x_i  mean)^2) where each x_i is a sample values. If 

bucketCounts[] 
The number of samples in each histogram bucket. The buckets are defined below in Any suffix of trailing zeros may be omitted. 

Union field Buckets are numbered in the range of [0, N], with a total of N+1 buckets. There must be at least two buckets (a singlebucket histogram gives no information that isn't already provided by The first bucket is the underflow bucket which has a lower bound of inf. The last bucket is the overflow bucket which has an upper bound of +inf. All other buckets (if any) are called "finite" buckets because they have finite lower and upper bounds. As described below, there are three ways to define the finite buckets. (1) Buckets with constant width. (2) Buckets with exponentially growing widths. (3) Buckets with arbitrary userprovided widths. In all cases, the buckets cover the entire real number line (inf, +inf). Bucket upper bounds are exclusive and lower bounds are inclusive. The upper bound of the underflow bucket is equal to the lower bound of the smallest finite bucket; the lower bound of the overflow bucket is equal to the upper bound of the largest finite bucket. 

linearBuckets 
Buckets with constant width. 

exponentialBuckets 
Buckets with exponentially growing width. 

explicitBuckets 
Buckets with arbitrary userprovided width. 
LinearBuckets
Describing buckets with constant width.
JSON representation  

{ "numFiniteBuckets": number, "width": number, "offset": number } 
Fields  

numFiniteBuckets 
The number of finite buckets. With the underflow and overflow buckets, the total number of buckets is 
width 
The i'th linear bucket covers the interval [offset + (i1) * width, offset + i * width) where i ranges from 1 to numFiniteBuckets, inclusive. Must be strictly positive. 
offset 
The i'th linear bucket covers the interval [offset + (i1) * width, offset + i * width) where i ranges from 1 to numFiniteBuckets, inclusive. 
ExponentialBuckets
Describing buckets with exponentially growing width.
JSON representation  

{ "numFiniteBuckets": number, "growthFactor": number, "scale": number } 
Fields  

numFiniteBuckets 
The number of finite buckets. With the underflow and overflow buckets, the total number of buckets is 
growthFactor 
The i'th exponential bucket covers the interval [scale * growthFactor^(i1), scale * growthFactor^i) where i ranges from 1 to numFiniteBuckets inclusive. Must be larger than 1.0. 
scale 
The i'th exponential bucket covers the interval [scale * growthFactor^(i1), scale * growthFactor^i) where i ranges from 1 to numFiniteBuckets inclusive. Must be > 0. 
ExplicitBuckets
Describing buckets with arbitrary userprovided width.
JSON representation  

{ "bounds": [ number ] } 
Fields  

bounds[] 
'bound' is a list of strictly increasing boundaries between buckets. Note that a list of length N1 defines N buckets because of fenceposting. See comments on The i'th finite bucket covers the interval [bound[i1], bound[i]) where i ranges from 1 to bound_size()  1. Note that there are no finite buckets at all if 'bound' only contains a single element; in that special case the single bound defines the boundary between the underflow and overflow buckets. bucket number lower bound upper bound i == 0 (underflow) inf bound[i] 0 < i < bound_size() bound[i1] bound[i] i == bound_size() (overflow) bound[i1] +inf 