roboto.domain.metrics.record
Module Contents
AggregateMetricRecord
Bases: pydantic.BaseModel
!!! abstract “Usage Documentation”
[Models](../concepts/models.md)
A base class for creating Pydantic models.
Attributes
AggregateMetricRecord.__class_vars__
__class_vars__ #The names of the class variables defined on the model.
AggregateMetricRecord.__private_attributes__
__private_attributes__ #Metadata about the private attributes of the model.
AggregateMetricRecord.__signature__
__signature__ #The synthesized __init__ [Signature][inspect.Signature] of the model.
AggregateMetricRecord.__pydantic_complete__
__pydantic_complete__ #Whether model building is completed, or if there are still undefined fields.
AggregateMetricRecord.__pydantic_core_schema__
__pydantic_core_schema__ #The core schema of the model.
AggregateMetricRecord.__pydantic_custom_init__
__pydantic_custom_init__ #Whether the model has a custom __init__ function.
AggregateMetricRecord.__pydantic_decorators__
__pydantic_decorators__ #Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
AggregateMetricRecord.__pydantic_generic_metadata__
__pydantic_generic_metadata__ #A dictionary containing metadata about generic Pydantic models. The origin and args items map to the [__origin__][genericalias.__origin__] and [__args__][genericalias.__args__] attributes of [generic aliases][types-genericalias], and the parameter item maps to the __parameter__ attribute of generic classes.
AggregateMetricRecord.__pydantic_parent_namespace__
__pydantic_parent_namespace__ #Parent namespace of the model, used for automatic rebuilding of models.
AggregateMetricRecord.__pydantic_post_init__
__pydantic_post_init__ #The name of the post-init method for the model, if defined.
AggregateMetricRecord.__pydantic_root_model__
__pydantic_root_model__ #Whether the model is a [RootModel][pydantic.root_model.RootModel].
AggregateMetricRecord.__pydantic_serializer__
__pydantic_serializer__ #The pydantic-core SchemaSerializer used to dump instances of the model.
AggregateMetricRecord.__pydantic_validator__
__pydantic_validator__ #The pydantic-core SchemaValidator used to validate instances of the model.
AggregateMetricRecord.__pydantic_fields__
__pydantic_fields__ #A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects.
AggregateMetricRecord.__pydantic_computed_fields__
__pydantic_computed_fields__ #A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.
AggregateMetricRecord.__pydantic_extra__
__pydantic_extra__ #A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to ‘allow’.
AggregateMetricRecord.__pydantic_fields_set__
__pydantic_fields_set__ #The names of fields explicitly set during instantiation.
AggregateMetricRecord.__pydantic_private__
__pydantic_private__ #Values of private attributes set on the model instance.
Parameters
data AnyAttributes
AggregateMetricRecord.end_time
Exclusive end of this period bucket, in Unix-epoch nanoseconds (UTC).
AggregateMetricRecord.period
Calendar bucket size used for this aggregation.
AggregateMetricRecord.start_time
Inclusive start of this period bucket, in Unix-epoch nanoseconds (UTC).
AggregateMetricsRequest
Bases: pydantic.BaseModel
Request payload for a numeric metric aggregation.
Parameters
data AnyAttributes
AggregateMetricsRequest.aggregation
Aggregation function to apply to the values in each bucket.
AggregateMetricsRequest.condition
Condition, or nested group of conditions, narrowing which data points are aggregated.
Applied to individual data points rather than to bucket results, so it changes each bucket’s value and total. A period whose data points are all filtered out yields no bucket at all, so a filtered aggregation can return fewer buckets than an unfiltered one over the same window. See condition for the accepted fields and the treatment of data points published without a device.
AggregateMetricsRequest.end_time_ns
Exclusive end of the aggregation window, in Unix-epoch nanoseconds (UTC). Built from aggregate()’s end_time parameter the same way.
AggregateMetricsRequest.group_by
Field to split the aggregation by, in addition to the period bucket: one NumericAggregateMetricRecord per (period, distinct value) pair, each carrying the value it aggregated under group_key.
None aggregates every matching data point of a period into one bucket. Accepts device.device_id and String, Enum, or Boolean custom fields on sessions and devices (session.custom.<name>, device.custom.<name>); every other field of the vocabulary condition accepts is rejected, since a group key must be single-valued and low-cardinality to be a series. Data points carrying no value for the field are grouped under a null group_key rather than dropped, and the response is not capped: every distinct value with data in the window comes back.
AggregateMetricsRequest.include_device_ids
Filter to observations from specific device IDs, None for null device_id only.
AggregateMetricsRequest.include_invocation_ids
Filter to observations from specific invocation IDs, None for null invocation_id only.
AggregateMetricsRequest.include_session_ids
Filter to observations for specific session IDs. None is not a valid value: metrics.session_id is non-nullable, so there is no “null session” subset to filter on. Omit (leave as NotSet) for no filter, or pass a list of IDs.
AggregateMetricsRequest.model_config
model_config #Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
AggregateMetricsRequest.period
Calendar bucket size to group observations by.
AggregateMetricsRequest.start_time_ns
Inclusive start of the aggregation window, in Unix-epoch nanoseconds (UTC). Built by aggregate() from its start_time parameter via to_epoch_nanoseconds().
AggregateMetricsRequest.time_filter
Whether to filter by session start time or end time.
AggregationPeriod
Bases: roboto.compat.StrEnum
Calendar bucket size used when grouping metric observations.
All aggregation start/end times are based on UTC time.
Attributes
CreateMetricDefinitionRequest
Bases: pydantic.BaseModel
Request payload to create a metric definition.
Parameters
data AnyAttributes
CreateMetricDefinitionRequest.description
Human-readable description of what the metric measures.
CreateMetricDefinitionRequest.unit
Unit of measure for values recorded under this metric, e.g. "%", "ms". Capped at 63 characters. None means unitless.
MAX_METRIC_LIST_RESULTS
Upper bound on the page size accepted by metric query and list calls.
query() auto-paginates with this value as the default page size, so total result-set size is unbounded. Callers can request smaller pages by setting max_results.
get_by_session() does not paginate and is still capped at this many rows; sessions with more data points should use the paginated query() instead.
MetricDefinitionRecord
Bases: pydantic.BaseModel
A wire-transmissible representation of a metric definition.
Parameters
data AnyAttributes
MetricDefinitionRecord.created
Timestamp when this metric definition was created.
MetricDefinitionRecord.created_by
User or service account that created this metric definition.
MetricDefinitionRecord.description
Human-readable description of what the metric measures.
MetricDefinitionRecord.modified
Timestamp when this metric definition was last modified.
MetricDefinitionRecord.modified_by
User or service account that last modified this metric definition.
MetricDefinitionRecord.unit
Unit of measure for every value recorded under this metric, e.g. "%", "ms", "m/s". Free-form and unvalidated; None means unitless.
MetricEntry
MetricRecord
Bases: pydantic.BaseModel
A wire-transmissible representation of a metric data point.
Parameters
data AnyAttributes
MetricRecord.group_key
Value of the field named by QueryMetricsRequest.group_by that this data point carries, rendered as text whatever the field’s type. None on every data point of an ungrouped query, and on a data point that carries no value for that field — one published without a device, or whose session or device has never been given a value for the custom field. Mirrors NumericAggregateMetricRecord.group_key, which splits buckets the same way.
MetricRecord.invocation_id
Action invocation that produced this data point, if any.
MetricRecord.max_timestamp_ns
Upper bound of the source session’s aggregate timestamps, in Unix-epoch nanoseconds. None until the session has at least one file contribution. Mirrors max_timestamp_ns.
MetricRecord.metric_id
Identifier of the metric definition this data point belongs to.
MetricRecord.min_timestamp_ns
Lower bound of the source session’s aggregate timestamps, in Unix-epoch nanoseconds. None until the session has at least one file contribution. Mirrors min_timestamp_ns.
MetricRecord.name
Human-readable name of the metric definition this data point belongs to. Resolved server-side from the parent MetricDefinitionRecord so callers do not need a second lookup to display the metric name alongside the value.
MetricRecord.published
Timestamp when this data point was published to the platform.
MetricRecord.unit
Unit of measure for value. Resolved server-side from the parent MetricDefinitionRecord, like name, so callers can label a value without a second lookup. None means unitless.
MetricTimeFilter
MetricUnit
NumericAggregateMetricRecord
Bases: AggregateMetricRecord
A wire-transmissible representation of one period bucket in a numeric metric aggregation.
Parameters
data AnyAttributes
NumericAggregateMetricRecord.aggregation
Aggregation function that was applied to produce this record.
NumericAggregateMetricRecord.group_key
Value of the field named by AggregateMetricsRequest.group_by that this bucket’s data points share, rendered as text whatever the field’s type. None on every bucket of an ungrouped aggregation, and on the bucket collecting the grouped data points that carry no value for that field — a data point published without a device, or a session or device that has never been given a value for the custom field.
NumericAggregateMetricRecord.unit
NumericAggregateMetricsResponse
Bases: pydantic.BaseModel
Response payload for a numeric metric aggregation request.
Parameters
data AnyAttributes
NumericAggregateMetricsResponse.aggregation
Aggregation function that was applied.
NumericAggregateMetricsResponse.records
Period buckets returned by the aggregation, sorted by start_time ascending.
NumericAggregation
Bases: roboto.compat.StrEnum
Aggregation function applied to numeric metric values within each period bucket.
Attributes
PublishMetricsRequest
Bases: pydantic.BaseModel
Request payload to insert multiple metric data points in a single call.
Parameters
data AnyAttributes
PublishMetricsRequest.device_id
Device that produced the data. When absent (NotSet), the server infers the device from the session’s attached devices: the request succeeds if exactly one device is attached and is rejected otherwise. Pass an explicit device ID or None to skip inference.
PublishMetricsRequest.model_config
model_config #Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
PublishMetricsRequest.session_id
Session all metrics in this batch will be attached to.
QueryMetricsRequest
Bases: pydantic.BaseModel
Request payload to query raw metric data points.
Parameters
data AnyAttributes
QueryMetricsRequest.condition
Condition, or nested group of conditions, narrowing which data points are returned.
Every field must be prefixed with the entity it filters on, singular or plural; a bare field name such as name is rejected. The available fields are:
session.<field>:session_id(aliasid),name,min_timestamp_ns(aliasstart_time),max_timestamp_ns(aliasend_time),duration,created,created_by,modified,modified_by,tags. The two timestamp bounds accept anythingto_epoch_nanoseconds()converts;durationtakes an integer count of nanoseconds.device.<field>:device_id(aliasid),tags,created,created_by,modified,modified_by,metadata(including dotted paths beneath it). Reads the device that published the data point, not the devices attached to its session.session.custom.<name>/device.custom.<name>/collection.custom.<name>: a custom field in theReadystate.collection.collection_id(aliascollection.id): the data point’s session belongs to that collection.EqualsandNotEqualsonly.
A session belongs to any number of collections, so a collection.* condition quantifies over that set: a data point matches when its session belongs to at least one collection satisfying the condition. A negated comparator (NotEquals, NotContains, NotLike) means the session belongs to no collection satisfying the positive form, so a session in no collection at all matches every negated collection condition. IsNull and NotExists likewise mean no collection the session belongs to carries a value for the field.
A data point published without a device matches a device.* condition only under IsNull and NotExists. Every other comparator asks what the device’s field holds, NotEquals, NotContains, and NotLike included, so a data point with no device, or a device carrying no value for the field, is excluded. Write device.<field> NotEquals x OR device.<field> IsNull to match both.
Any other field, a comparator the field’s type does not accept, a value the field cannot convert, or a Not group raises RobotoIllegalArgumentException.
QueryMetricsRequest.descending
Order data points from the largest sort_by value to the smallest, instead of smallest first.
With the default sort_by, this returns the most recent data points first.
QueryMetricsRequest.end_time_ns
Exclusive end of the query window, in Unix-epoch nanoseconds (UTC). Built from query()’s end_time parameter the same way. Defaults to None (now).
QueryMetricsRequest.group_by
Field whose value each returned data point should carry, under MetricRecord.group_key.
Unlike AggregateMetricsRequest.group_by, this does not change which rows come back or how many: a raw query already returns one data point per session, so there is nothing to split. It projects the field’s value onto each one, which is what lets a caller separate the points into a series per distinct value without resolving the field itself.
None leaves MetricRecord.group_key null on every data point. Accepts the same vocabulary the aggregation does — device.device_id and String, Enum, or Boolean custom fields on sessions and devices (session.custom.<name>, device.custom.<name>) — and rejects every other field of condition’s vocabulary with RobotoIllegalArgumentException. A data point carrying no value for the field gets a null group_key rather than being dropped.
QueryMetricsRequest.include_device_ids
Filter to observations from specific device IDs, None for null device_id only.
QueryMetricsRequest.include_invocation_ids
Filter to observations from specific invocation IDs, None for null invocation_id only.
QueryMetricsRequest.include_session_ids
Filter to observations for specific session IDs. None is not a valid value: metrics.session_id is non-nullable, so there is no “null session” subset to filter on. Omit (leave as NotSet) for no filter, or pass a list of IDs.
QueryMetricsRequest.max_results
Maximum number of data points to return. Must be between 1 and MAX_METRIC_LIST_RESULTS (10,000).
QueryMetricsRequest.model_config
model_config #Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
QueryMetricsRequest.sort_by
Field to order data points by, with session_id as a deterministic tiebreaker.
One of time (the session time selected by time_filter), value, published, device_id, session_id or invocation_id; any other field is rejected with RobotoInvalidRequestException. Data points with no device_id or invocation_id sort after every other value. Defaults to time.
QueryMetricsRequest.start_time_ns
Inclusive start of the query window, in Unix-epoch nanoseconds (UTC). Built by query() from its start_time parameter via to_epoch_nanoseconds(). Defaults to None (the Unix epoch).
QueryMetricsRequest.time_filter
Whether to filter by session start time or end time.
UpdateMetricDefinitionRequest
Bases: pydantic.BaseModel
Request payload to update a metric definition.
Parameters
data AnyAttributes
UpdateMetricDefinitionRequest.description
New description, None to clear, or NotSet to leave unchanged.
UpdateMetricDefinitionRequest.model_config
model_config #Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
UpdateMetricDefinitionRequest.unit
New unit of measure (max 63 characters), None to clear, or NotSet to leave unchanged.